-
-
-
-
-
+
+
-
-
-
-
-
-
\ No newline at end of file
diff --git a/WebLab/Usuarios/UsuarioList.aspx.cs b/WebLab/Usuarios/UsuarioList.aspx.cs
index 48802cc..c2b2eea 100644
--- a/WebLab/Usuarios/UsuarioList.aspx.cs
+++ b/WebLab/Usuarios/UsuarioList.aspx.cs
@@ -109,29 +109,53 @@ private void CargarListas()
oUtil.CargarCombo(ddlEfector, m_ssql, "idEfector", "nombre");
if (nivelcentral)
ddlEfector.Items.Insert(0, new ListItem("Todos", "0"));
-
+
+ m_ssql = @"SELECT idPerfil, nombre FROM Sys_Perfil with (nolock) ORDER BY nombre";
+ oUtil.CargarCombo(ddlPerfil, m_ssql, "idPerfil", "nombre");
+ ddlPerfil.Items.Insert(0, new ListItem("Todos", "0"));
+
}
private void CargarGrilla()
{
gvLista.AutoGenerateColumns = false;
gvLista.DataSource = LeerDatos();
gvLista.DataBind();
+ CurrentPageLabel.Text = "Página " + (gvLista.PageIndex+1) + " de " + gvLista.PageCount.ToString();
}
private object LeerDatos()
{
string str_condicion = " where username!='adminapi'";
string m_strSQL = @"SELECT U.idUsuario, U.apellido, U.nombre, U.username, P.nombre AS perfil, E.nombre as efector ,
-case when U.activo=1 then 'Si' else 'No' end as habilitado, U.activo as activo
+case when U.activo=1 then 'Si' else 'No' end as habilitado, U.activo as activo , tipoAutenticacion
FROM Sys_Usuario AS U (nolock) INNER JOIN
Sys_Perfil AS P (nolock) ON U.idPerfil = P.idPerfil inner join
Sys_UsuarioEfector UE (nolock) on Ue.idusuario= U.idUsuario inner join
- sys_efector as E (nolock) on Ue.idEfector= E.idEfector";
+ sys_efector as E (nolock) on Ue.idEfector= E.idEfector
+ ";
if (ddlEfector.SelectedValue != "0")
str_condicion += " and E.idEfector=" + ddlEfector.SelectedValue.ToString();
- m_strSQL += str_condicion+ " order by username";
+ if (ddlPerfil.SelectedValue != "0")
+ str_condicion += " and P.idPerfil=" + ddlPerfil.SelectedValue.ToString();
+ if (ddlTipoAutenticacion.SelectedValue != "0")
+ str_condicion += " and tipoAutenticacion='" + ddlTipoAutenticacion.SelectedValue.ToString()+"'";
+ if (ddlHabilitados.SelectedValue != "0")
+ if(ddlHabilitados.SelectedValue == "1") str_condicion += " and U.activo=1";
+ else str_condicion += " and U.activo=0";
+
+ if (txtUsername.Text != "")
+ str_condicion += " and U.username LIKE '%" + txtUsername.Text + "%'";
+ if (txtNombre.Text != "")
+ str_condicion += " and U.nombre LIKE '%" + txtNombre.Text +"%'";
+ if (txtApellido.Text != "")
+ str_condicion += " and U.apellido LIKE '%" + txtApellido.Text +"%'";
+
+ if(chbAdministrador.Checked)
+ str_condicion += " and U.administrador=1";
+
+ m_strSQL += str_condicion + " order by username";
@@ -141,8 +165,8 @@ Sys_UsuarioEfector UE (nolock) on Ue.idusuario= U.idUsuario inner join
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(m_strSQL, conn);
adapter.Fill(Ds);
-
-
+ CantidadRegistros.Text = Ds.Tables[0].Rows.Count.ToString() + " registros encontrados";
+
return Ds.Tables[0];
}
@@ -188,7 +212,7 @@ protected void gvLista_RowDataBound(object sender, GridViewRowEventArgs e)
if (e.Row.RowType == DataControlRowType.DataRow)
{
- ImageButton CmdModificar = (ImageButton)e.Row.Cells[6].Controls[1];
+ ImageButton CmdModificar = (ImageButton)e.Row.Cells[7].Controls[1];
CmdModificar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString();
CmdModificar.CommandName = "Modificar";
@@ -251,16 +275,32 @@ protected void lnkExcel_Click(object sender, EventArgs e)
private DataTable LeerDatosExcel()
{
- string m_strFiltro = "";
+ string m_strFiltro = "1=1 ";
DataSet Ds = new DataSet();
// SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
if (ddlEfector.SelectedValue != "0")
- m_strFiltro = " E.idEfector=" + ddlEfector.SelectedValue.ToString();
-
-
+ m_strFiltro += " AND E.idEfector=" + ddlEfector.SelectedValue.ToString();
+
+
+ if (ddlPerfil.SelectedValue != "0")
+ m_strFiltro += " and P.idPerfil=" + ddlPerfil.SelectedValue.ToString();
+ if (ddlTipoAutenticacion.SelectedValue != "0")
+ m_strFiltro += " and tipoAutenticacion='" + ddlTipoAutenticacion.SelectedValue.ToString() + "'";
+ if (ddlHabilitados.SelectedValue != "0")
+ if (ddlHabilitados.SelectedValue == "1") m_strFiltro += " and U.activo=1";
+ else m_strFiltro += " and U.activo=0";
+
+ if (txtUsername.Text != "")
+ m_strFiltro += " and U.username LIKE '%" + txtUsername.Text + "%'";
+ if (txtNombre.Text != "")
+ m_strFiltro += " and U.nombre LIKE '%" + txtNombre.Text + "%'";
+ if (txtApellido.Text != "")
+ m_strFiltro += " and U.apellido LIKE '%" + txtApellido.Text + "%'";
+ if (chbAdministrador.Checked)
+ m_strFiltro += " and U.administrador=1";
cmd.CommandText = "[LAB_ListaUsuarios]";
@@ -308,5 +348,45 @@ private void dataTableAExcel(DataTable tabla, string nombreArchivo)
Response.End();
}
}
+
+ protected void btnBuscar_Click(object sender, EventArgs e)
+ {
+ CargarGrilla();
+ }
+
+ protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ CargarGrilla();
+ }
+
+
+
+ protected void gvLista_PageIndexChanging(object sender, GridViewPageEventArgs e)
+ {
+ if (Session["idUsuario"] != null)
+ {
+ gvLista.PageIndex = e.NewPageIndex;
+ int currentPage = gvLista.PageIndex + 1;
+ CurrentPageLabel.Text = "Página " + currentPage.ToString() + " de " + gvLista.PageCount.ToString();
+ CargarGrilla();
+ }
+ else
+ Response.Redirect("../FinSesion.aspx", false);
+ }
+
+ protected void ddlTipoAutenticacion_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ CargarGrilla();
+ }
+
+ protected void ddlHabilitados_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ CargarGrilla();
+ }
+
+ protected void chbAdministrador_CheckedChanged(object sender, EventArgs e)
+ {
+ CargarGrilla();
+ }
}
}
diff --git a/WebLab/Usuarios/UsuarioList.aspx.designer.cs b/WebLab/Usuarios/UsuarioList.aspx.designer.cs
index c6d3ef5..730a6fd 100644
--- a/WebLab/Usuarios/UsuarioList.aspx.designer.cs
+++ b/WebLab/Usuarios/UsuarioList.aspx.designer.cs
@@ -1,50 +1,160 @@
//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
+//
+// Este código fue generado por una herramienta.
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
+// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
+// se vuelve a generar el código.
+//
//------------------------------------------------------------------------------
-namespace WebLab.Usuarios {
-
-
- public partial class UsuarioList {
-
+namespace WebLab.Usuarios
+{
+
+
+ public partial class UsuarioList
+ {
+
///
- /// ddlEfector control.
+ /// Control pnlTitulo.
///
///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlGenericControl pnlTitulo;
+
+ ///
+ /// Control ddlEfector.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
///
protected global::System.Web.UI.WebControls.DropDownList ddlEfector;
-
+
///
- /// btnAgregar control.
+ /// Control ddlPerfil.
///
///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
///
- protected global::System.Web.UI.WebControls.Button btnAgregar;
-
+ protected global::System.Web.UI.WebControls.DropDownList ddlPerfil;
+
+ ///
+ /// Control txtUsername.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtUsername;
+
+ ///
+ /// Control ddlTipoAutenticacion.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.DropDownList ddlTipoAutenticacion;
+
+ ///
+ /// Control txtNombre.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtNombre;
+
+ ///
+ /// Control txtApellido.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtApellido;
+
+ ///
+ /// Control ddlHabilitados.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.DropDownList ddlHabilitados;
+
///
- /// lnkExcel control.
+ /// Control chbAdministrador.
///
///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.CheckBox chbAdministrador;
+
+ ///
+ /// Control lnkExcel.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
///
protected global::System.Web.UI.WebControls.LinkButton lnkExcel;
-
+
+ ///
+ /// Control btnBuscar.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Button btnBuscar;
+
+ ///
+ /// Control btnAgregar.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Button btnAgregar;
+
+ ///
+ /// Control pnlLista.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Panel pnlLista;
+
+ ///
+ /// Control CantidadRegistros.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Label CantidadRegistros;
+
+ ///
+ /// Control CurrentPageLabel.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Label CurrentPageLabel;
+
///
- /// gvLista control.
+ /// Control gvLista.
///
///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
///
protected global::System.Web.UI.WebControls.GridView gvLista;
}
diff --git a/WebLab/WebLab.csproj b/WebLab/WebLab.csproj
index 35044e5..e3c6e5f 100644
--- a/WebLab/WebLab.csproj
+++ b/WebLab/WebLab.csproj
@@ -2678,6 +2678,14 @@
+
+
+
+
+
+
+
+
@@ -2705,6 +2713,7 @@
+
@@ -3102,6 +3111,8 @@
+
+
diff --git a/WebLab/loginSIL.ascx b/WebLab/loginSIL.ascx
index 5034c9b..76136c9 100644
--- a/WebLab/loginSIL.ascx
+++ b/WebLab/loginSIL.ascx
@@ -17,7 +17,7 @@
PasswordRequiredErrorMessage="Contraseña es requerida"
TitleText="Nueva autenticación de usuario" UserNameLabelText="Usuario:"
UserNameRequiredErrorMessage="Usuario es requerido"
- >
+ FailureText="" >
@@ -61,3 +61,85 @@
+
+
+
+
+
+
+
+
+
+
+
+ El Ministerio de Salud de la Provincia de Neuquén, en el contexto del Sistema Informático de Laboratorios, se encuentra comprometido y comparte la responsabilidad de resguardar los derechos a la intimidad y confidencialidad de la información de los pacientes.
+
+
+
+ Cualquier integrante de los equipos de salud que, en función de hacer posible el proceso de asistencia sanitaria a dichas personas, tenga acceso a esta información almacenada en el Sistema Informático de Laboratorios, debe cumplir con la normativa jurídica que protege estos derechos:
+
+
+ Leyes Nacionales:
+
+ - Artículos 18, 19 y 43 de la Constitución Nacional (derechos a la intimidad y habeas data).
+ - Artículo 52 del Código Civil y Comercial Nacional (derecho a la intimidad).
+ - Artículo 11 de la Ley Nacional 17.132 de Ejercicio de la Medicina, Odontología y actividades de colaboración con ambas disciplinas (secreto profesional).
+ - Artículo 2, incisos c y d, de la Ley Nacional 26.529 de Derechos del Paciente en su Relación con los Profesionales e Instituciones de la Salud (derechos a la intimidad y confidencialidad).
+ - Artículos 8 y 10 de la Ley Nacional 25.326 de Protección de Datos Personales.
+
+
+ Leyes Provinciales:
+
+ - Ley 578 de Ejercicio de la medicina, odontología y actividades de colaboración.
+ - Artículo 8 de la Ley 2611, de derechos y obligaciones de los pacientes y usuarios de los servicios de salud públicos y privados de la Provincia (derecho a la confidencialidad y a la intimidad).
+ - Ley 2399 de Protección de Datos Personales.
+
+
+
+ Ante incumplimiento de estas obligaciones debe saber que puede tener consecuencias legales. Asimismo, desde el Ministerio de Salud se procederá a:
+
+
+
+ - Iniciar sumario administrativo por falta grave.
+ - Suspender en forma automática los permisos de acceso al Sistema Informático de Laboratorios.
+ - En caso de ser profesional, se informará al comité de ética deontológico correspondiente.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebLab/loginSIL.ascx.cs b/WebLab/loginSIL.ascx.cs
index 63c6677..374a5b4 100644
--- a/WebLab/loginSIL.ascx.cs
+++ b/WebLab/loginSIL.ascx.cs
@@ -40,8 +40,6 @@ protected void Page_Load(object sender, EventArgs e)
}
}
- ////else
-
}
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
@@ -60,9 +58,9 @@ protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
adapter.Fill(Ds);
DataTable dtPermisos = Ds.Tables[0];
- if (dtPermisos.Rows.Count > 0) {
- i_idusuario = int.Parse(dtPermisos.Rows[0][0].ToString());
- }
+ if (dtPermisos.Rows.Count > 0) {
+ i_idusuario = int.Parse(dtPermisos.Rows[0][0].ToString());
+ }
Usuario oUser = new Usuario();
@@ -71,6 +69,13 @@ protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
oUser = (Usuario)oUser.Get(typeof(Usuario), i_idusuario);
+ if (MostrarTerminosCondiciones(oUser))
+ {
+ Session["usuarioPendienteAceptacion"] = oUser;
+ ScriptManager.RegisterStartupScript(this, this.GetType(), "mostrarModal", "$('#modalTerminosCondiciones').modal('show');", true);
+ return;
+ }
+
}
else
{
@@ -80,113 +85,7 @@ protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
}
- /* Habilitar cuando se quiera autogestion de usuarios medicos
- if (oUser == null)
- AutenticarUsuarioLdap(Login1.UserName, Login1.Password);
- */
- if (oUser != null)
- {
- if ((oUser.Activo)&&(oUser.IdPerfil.Activo))
- {
- if ((oUser.Activo) && (oUser.Externo))
- {
- Session["idUsuario"] = oUser.IdUsuario.ToString();
- Response.Redirect("~/Consulta/Historiaclinicafiltro.aspx", false);
-
- }
- else
- {
- Session["idUsuarioValida"] = null;
-
- if (Request["Operacion"] == null)
- {//////////////nuevo login
- Session["SIL"] = "1";
-
- if (oUser.RequiereCambioPass)
- Response.Redirect("~/Usuarios/PasswordEdit2.aspx?idUsuario="+ oUser.IdUsuario.ToString(), false);
-
- else
- {
- Session["idUsuarioAux"] = oUser.IdUsuario.ToString();
- Response.Redirect("LoginEfector.aspx", false);
-
- //Session["idUsuario"] = oUser.IdUsuario.ToString();
- //Response.Redirect("Default.aspx", false);
- }
- }
- else
- {///////////////validacion
- if (Request["idCasoFiliacion"] != null)
- {
-
-
- if ((Request["idServicio"].ToString() == "6") && (VerificarSiTienePermisodeValidar(oUser.Username, "/CasoFiliacion/CasoResultado.aspx")))
- {
- //HttpContext Context;
- //Context = HttpContext.Current;
- //Context.Items.Add("id", Request["idCasoFiliacion"].ToString());
- Session["idUsuarioValida"] = oUser.IdUsuario.ToString();
- //Context.Items.Add("Desde", "Valida");
- //Server.Transfer("~/CasoFiliacion/CasoResultado.aspx");
-
- Response.Redirect("~/casoFiliacion/CasoResultado3.aspx?id=" + Request["idCasoFiliacion"].ToString()+ "&Desde=Valida&logIn=1");
-
-
- }
- if ((Request["idServicio"].ToString() == "3") && (VerificarSiTienePermisodeValidar(oUser.Username, "/CasoFiliacion/CasoResultadoHisto.aspx")))
- {
- //HttpContext Context2;
- //Context2 = HttpContext.Current;
- //Context2.Items.Add("id", Request["idCasoFiliacion"].ToString());
- Session["idUsuarioValida"] = oUser.IdUsuario.ToString();
- //Context2.Items.Add("Desde", "Valida");
- //Server.Transfer("~/CasoFiliacion/CasoResultadoHisto.aspx");
-
- Response.Redirect("~/CasoFiliacion/CasoResultadoHisto.aspx?id=" + Request["idCasoFiliacion"].ToString() + "&Desde=Valida&logIn=1", false);
-
- }
-
- }
- else
- {
- string idServicio = Request["idServicio"].ToString();
- string operacion = Request["Operacion"].ToString();
- string modo = Request["modo"].ToString();
- if (VerificarSiTienePermisodeValidar(oUser.Username, "/Resultados/ResultadoBusqueda.aspx?idServicio=" + idServicio + "&Operacion=" + operacion + "&modo=" + modo))
- {
- Session["idUsuarioValida"] = oUser.IdUsuario.ToString();
- if (Request["urgencia"] != null)
- {
-
- string sredirect = "~/resultados/ResultadoEdit2.aspx?idServicio=1&Operacion=Valida&idProtocolo=" + Request["idProtocolo"].ToString() + "&Index=0&Parametros=" + Request["idProtocolo"].ToString() + "&idArea=0&urgencia=1&validado=0&modo=Urgencia"; //&idUsuarioValida=" + oUser.IdUsuario.ToString();
- if (Request["desde"] != null)
- sredirect += "&desde=" + Request["desde"].ToString();
- Response.Redirect(sredirect, false);
- // Response.Redirect("~/Resultados/ResultadoBusqueda.aspx?idServicio=" + idServicio + "&Operacion=" + operacion + "&modo=" + modo + "&idUsuarioValida=" + oUser.IdUsuario, false);
- }
- else
- Response.Redirect("~/Resultados/ResultadoBusqueda.aspx?idServicio=" + idServicio + "&Operacion=" + operacion + "&modo=" + modo + "&logIn=1", false);// + "&idUsuarioValida=" + oUser.IdUsuario, false);
- }
- else
- {
- e.Authenticated = false;
- Login1.FailureText = "El usuario no tiene permisos para validar.";
- }
- }
- }//fin else casofi
- }//externo
- }//activo
- else
- {
- e.Authenticated = false;
- Login1.FailureText = "El usuario no está activo por inactividad.";
- }
- }
- else
- {
- e.Authenticated = false;
- Login1.FailureText = "El usuario y/o contraseña no son correctos.";
- }
+ IngresoSistema(oUser, e);
}
@@ -327,5 +226,173 @@ FROM Sys_Menu AS M INNER JOIN
return b_permiso;
}
}
+
+ private void IngresoSistema(Usuario oUser, AuthenticateEventArgs e)
+ {
+
+ /* Habilitar cuando se quiera autogestion de usuarios medicos
+ if (oUser == null)
+ AutenticarUsuarioLdap(Login1.UserName, Login1.Password);
+ */
+ if (oUser != null)
+ {
+ if ((oUser.Activo) && (oUser.IdPerfil.Activo))
+ {
+ if ((oUser.Activo) && (oUser.Externo))
+ {
+ Session["idUsuario"] = oUser.IdUsuario.ToString();
+ Response.Redirect("~/Consulta/Historiaclinicafiltro.aspx", false);
+
+ }
+ else
+ {
+ Session["idUsuarioValida"] = null;
+
+ if (Request["Operacion"] == null)
+ {//////////////nuevo login
+ Session["SIL"] = "1";
+
+ if (oUser.RequiereCambioPass)
+ Response.Redirect("~/Usuarios/PasswordEdit2.aspx?idUsuario=" + oUser.IdUsuario.ToString(), false);
+
+ else
+ {
+ Session["idUsuarioAux"] = oUser.IdUsuario.ToString();
+ Response.Redirect("LoginEfector.aspx", false);
+
+ //Session["idUsuario"] = oUser.IdUsuario.ToString();
+ //Response.Redirect("Default.aspx", false);
+ }
+ }
+ else
+ {///////////////validacion
+ if (Request["idCasoFiliacion"] != null)
+ {
+
+
+ if ((Request["idServicio"].ToString() == "6") && (VerificarSiTienePermisodeValidar(oUser.Username, "/CasoFiliacion/CasoResultado.aspx")))
+ {
+ //HttpContext Context;
+ //Context = HttpContext.Current;
+ //Context.Items.Add("id", Request["idCasoFiliacion"].ToString());
+ Session["idUsuarioValida"] = oUser.IdUsuario.ToString();
+ //Context.Items.Add("Desde", "Valida");
+ //Server.Transfer("~/CasoFiliacion/CasoResultado.aspx");
+
+ Response.Redirect("~/casoFiliacion/CasoResultado3.aspx?id=" + Request["idCasoFiliacion"].ToString() + "&Desde=Valida&logIn=1");
+
+
+ }
+ if ((Request["idServicio"].ToString() == "3") && (VerificarSiTienePermisodeValidar(oUser.Username, "/CasoFiliacion/CasoResultadoHisto.aspx")))
+ {
+ //HttpContext Context2;
+ //Context2 = HttpContext.Current;
+ //Context2.Items.Add("id", Request["idCasoFiliacion"].ToString());
+ Session["idUsuarioValida"] = oUser.IdUsuario.ToString();
+ //Context2.Items.Add("Desde", "Valida");
+ //Server.Transfer("~/CasoFiliacion/CasoResultadoHisto.aspx");
+
+ Response.Redirect("~/CasoFiliacion/CasoResultadoHisto.aspx?id=" + Request["idCasoFiliacion"].ToString() + "&Desde=Valida&logIn=1", false);
+
+ }
+
+ }
+ else
+ {
+ string idServicio = Request["idServicio"].ToString();
+ string operacion = Request["Operacion"].ToString();
+ string modo = Request["modo"].ToString();
+ if (VerificarSiTienePermisodeValidar(oUser.Username, "/Resultados/ResultadoBusqueda.aspx?idServicio=" + idServicio + "&Operacion=" + operacion + "&modo=" + modo))
+ {
+ Session["idUsuarioValida"] = oUser.IdUsuario.ToString();
+ if (Request["urgencia"] != null)
+ {
+
+ string sredirect = "~/resultados/ResultadoEdit2.aspx?idServicio=1&Operacion=Valida&idProtocolo=" + Request["idProtocolo"].ToString() + "&Index=0&Parametros=" + Request["idProtocolo"].ToString() + "&idArea=0&urgencia=1&validado=0&modo=Urgencia"; //&idUsuarioValida=" + oUser.IdUsuario.ToString();
+ if (Request["desde"] != null)
+ sredirect += "&desde=" + Request["desde"].ToString();
+ Response.Redirect(sredirect, false);
+ // Response.Redirect("~/Resultados/ResultadoBusqueda.aspx?idServicio=" + idServicio + "&Operacion=" + operacion + "&modo=" + modo + "&idUsuarioValida=" + oUser.IdUsuario, false);
+ }
+ else
+ Response.Redirect("~/Resultados/ResultadoBusqueda.aspx?idServicio=" + idServicio + "&Operacion=" + operacion + "&modo=" + modo + "&logIn=1", false);// + "&idUsuarioValida=" + oUser.IdUsuario, false);
+ }
+ else
+ {
+ e.Authenticated = false;
+ Login1.FailureText = "El usuario no tiene permisos para validar.";
+ }
+ }
+ }//fin else casofi
+ }//externo
+ }//activo
+ else
+ {
+ e.Authenticated = false;
+ Login1.FailureText = "El usuario no está activo por inactividad.";
+ }
+ }
+ else
+ {
+ e.Authenticated = false;
+ Login1.FailureText = "El usuario y/o contraseña no son correctos.";
+ }
+
+ lblMensajeError.Text = Login1.FailureText;
+ Login1.FailureText = ""; //Muestro solo lblMensajeError, ya que Login1.FailureText solo sirve para Login1_Authenticate y no para btn_aceptarTerminosCondiciones_Click
+ }
+ protected void btn_aceptarTerminosCondiciones_Click(object sender, EventArgs e)
+ {
+ Usuario oUser = (Usuario) Session["usuarioPendienteAceptacion"];
+
+ if (oUser != null)
+ {
+ Session["usuarioPendienteAceptacion"] = null;
+ //Actualizar la fecha en la bd
+ oUser.FechaAceptaTerminosCondiciones = DateTime.Now;
+ oUser.Save();
+ //Actualizo acceso en log
+ CrearLogAcceso(oUser);
+ //Ingreso al sistema
+ AuthenticateEventArgs evento = new AuthenticateEventArgs(true);
+ IngresoSistema(oUser, evento);
+ }
+ else
+ {
+ Response.Redirect("Logout.aspx", true);
+ }
+ }
+ private void CrearLogAcceso(Usuario oUser)
+ {
+ LogAccesoTerminosCondiciones RegistroAcceso = new LogAccesoTerminosCondiciones();
+ RegistroAcceso.IdUsuario = oUser.IdUsuario;
+ RegistroAcceso.Fecha = DateTime.Now;
+ RegistroAcceso.Save();
+ }
+
+ private bool MostrarTerminosCondiciones(Usuario oUser)
+ {
+ int dias = Convert.ToInt32(ConfigurationManager.AppSettings["DiasTerminosCondiciones"]);
+ if(dias > 0)
+ {
+ DateTime ultimaFecha = oUser.FechaAceptaTerminosCondiciones;
+ DateTime hoy = DateTime.Now;
+
+ TimeSpan diferencia = hoy.Subtract(ultimaFecha);
+ int diferenciasDias = diferencia.Days;
+
+ if (diferenciasDias > dias)
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ ScriptManager.RegisterStartupScript(this, this.GetType(), "error", "alert('❌ No hay dias definidos para los terminos y condiciones');", true);
+ return true;
+ }
+
+
+ }
}
}
\ No newline at end of file
diff --git a/WebLab/loginSIL.ascx.designer.cs b/WebLab/loginSIL.ascx.designer.cs
index c841dfb..98c1b50 100644
--- a/WebLab/loginSIL.ascx.designer.cs
+++ b/WebLab/loginSIL.ascx.designer.cs
@@ -1,25 +1,53 @@
//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
+//
+// Este código fue generado por una herramienta.
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
+// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
+// se vuelve a generar el código.
+//
//------------------------------------------------------------------------------
-namespace WebLab {
-
-
+namespace WebLab
+{
+
+
public partial class loginSIL
{
-
+
///
- /// Login1 control.
+ /// Control Login1.
///
///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
///
protected global::System.Web.UI.WebControls.Login Login1;
+
+ ///
+ /// Control lblMensajeError.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblMensajeError;
+
+ ///
+ /// Control cb_aceptaTerminos.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.CheckBox cb_aceptaTerminos;
+
+ ///
+ /// Control btn_aceptarTerminosCondiciones.
+ ///
+ ///
+ /// Campo generado automáticamente.
+ /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente.
+ ///
+ protected global::System.Web.UI.WebControls.Button btn_aceptarTerminosCondiciones;
}
}
diff --git a/WebLab/script/chosen/LICENSE.md b/WebLab/script/chosen/LICENSE.md
new file mode 100644
index 0000000..5e1332c
--- /dev/null
+++ b/WebLab/script/chosen/LICENSE.md
@@ -0,0 +1,23 @@
+#### Chosen
+- by Patrick Filler for [Harvest](http://getharvest.com)
+- Copyright (c) 2011-2016 by Harvest
+
+Available for use under the [MIT License](http://en.wikipedia.org/wiki/MIT_License)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/WebLab/script/chosen/chosen-sprite.png b/WebLab/script/chosen/chosen-sprite.png
new file mode 100644
index 0000000000000000000000000000000000000000..c57da70b4b5b1e08a6977ddde182677af0e5e1b8
GIT binary patch
literal 538
zcmV+#0_FXQP)
cz2)-WJLkv8J@4bb5L`rsE?Kc|FrXHkKz)ov
z76MHYM&Apx%05P7orE!>9=yZ~6O0^V?1%{=1UASqa<2Pgnk7fs!OIs9gh{NCN+@=)
z>Gfttd5uq;oeR{%NHjtqV~jEQeY?tDff=(jqx>~SZ_e+iN26HR*`0Q!Re)~HD85p>
zbL()Mw}bI^#`7wp0+cv&7*LhrtOmR)?PK>(-BeLm#jL5Jfogv-QS(TBnUb;))Krqm
zD}uDDeVLNhm1G*pFB`O?iA=dnWBEpqHk8Yh%Qu45EIG=&F-dDmt|;|nN@|3lOkVZ7>z*~a1?_t?U)c+&|JFJke1`&0-a
z#PjhRlg?=$KTo4|rU@NyV_fzDy@>h!lVyKShsO8>V>$xyIXRbHK%H~^Aaz=s$Jz^V
zlb?KfaKdZqu3^#m$mintvgJ15@j`sb2Zr%69Sn=xN01Tm5r)NQanT=jhwm7zqj2>O
cEB}D~0$b-QdD7|v=>Px#07*qoM6N<$g6AXnUH||9
literal 0
HcmV?d00001
diff --git a/WebLab/script/chosen/chosen-sprite@2x.png b/WebLab/script/chosen/chosen-sprite@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b50545202cb4770039362c55025b0b9824663ad
GIT binary patch
literal 738
zcmV<80v-K{P)oJoIWh{eAG@xkM<0ryd(K3(}
zP8JV&;uuIJ4nL%g8!wSG9E$P+3QVMGgj><+00}M5I5kMzaT<~M;uJ`UhLfbp9Ahdsrux5(g+(>Q*+9wU{AuYPH0}W_u4`|q(9c->{
zt>Jn|lbhH<_x5jU6prFi#S}&XMZ=~Y5VyC3+ZN%hXciz8
zPcLpJgbIK#a49e31-%wf2zh2F&&(Nq;AL%4zA(=QJRGq`sx3y3#0_cg9Fim739XTOu1NKKjlWs`52Q+3
Uja*K~(*OVf07*qoM6N<$g3mu-GXMYp
literal 0
HcmV?d00001
diff --git a/WebLab/script/chosen/chosen.css b/WebLab/script/chosen/chosen.css
new file mode 100644
index 0000000..5ae6fc9
--- /dev/null
+++ b/WebLab/script/chosen/chosen.css
@@ -0,0 +1,496 @@
+/*!
+Chosen, a Select Box Enhancer for jQuery and Prototype
+by Patrick Filler for Harvest, http://getharvest.com
+
+Version 1.8.7
+Full source at https://github.com/harvesthq/chosen
+Copyright (c) 2011-2018 Harvest http://getharvest.com
+
+MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
+This file is generated by `grunt build`, do not edit it by hand.
+*/
+
+/* @group Base */
+.chosen-container {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ font-size: 13px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.chosen-container * {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.chosen-container .chosen-drop {
+ position: absolute;
+ top: 100%;
+ z-index: 1010;
+ width: 100%;
+ border: 1px solid #aaa;
+ border-top: 0;
+ background: #fff;
+ -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
+ clip: rect(0, 0, 0, 0);
+ -webkit-clip-path: inset(100% 100%);
+ clip-path: inset(100% 100%);
+}
+
+.chosen-container.chosen-with-drop .chosen-drop {
+ clip: auto;
+ -webkit-clip-path: none;
+ clip-path: none;
+}
+
+.chosen-container a {
+ cursor: pointer;
+}
+
+.chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
+ margin-right: 4px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ font-weight: normal;
+ color: #999999;
+}
+
+.chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
+ content: ":";
+ padding-left: 2px;
+ vertical-align: top;
+}
+
+/* @end */
+/* @group Single Chosen */
+.chosen-container-single .chosen-single {
+ position: relative;
+ display: block;
+ overflow: hidden;
+ padding: 0 0 0 8px;
+ height: 25px;
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ background-color: #fff;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #fff), color-stop(50%, #f6f6f6), color-stop(52%, #eee), to(#f4f4f4));
+ background: linear-gradient(#fff 20%, #f6f6f6 50%, #eee 52%, #f4f4f4 100%);
+ background-clip: padding-box;
+ -webkit-box-shadow: 0 0 3px #fff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 0 3px #fff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
+ color: #444;
+ text-decoration: none;
+ white-space: nowrap;
+ line-height: 24px;
+}
+
+.chosen-container-single .chosen-default {
+ color: #999;
+}
+
+.chosen-container-single .chosen-single span {
+ display: block;
+ overflow: hidden;
+ margin-right: 26px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.chosen-container-single .chosen-single-with-deselect span {
+ margin-right: 38px;
+}
+
+.chosen-container-single .chosen-single abbr {
+ position: absolute;
+ top: 6px;
+ right: 26px;
+ display: block;
+ width: 12px;
+ height: 12px;
+ background: url("chosen-sprite.png") -42px 1px no-repeat;
+ font-size: 1px;
+}
+
+.chosen-container-single .chosen-single abbr:hover {
+ background-position: -42px -10px;
+}
+
+.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
+ background-position: -42px -10px;
+}
+
+.chosen-container-single .chosen-single div {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: block;
+ width: 18px;
+ height: 100%;
+}
+
+.chosen-container-single .chosen-single div b {
+ display: block;
+ width: 100%;
+ height: 100%;
+ background: url("chosen-sprite.png") no-repeat 0px 2px;
+}
+
+.chosen-container-single .chosen-search {
+ position: relative;
+ z-index: 1010;
+ margin: 0;
+ padding: 3px 4px;
+ white-space: nowrap;
+}
+
+.chosen-container-single .chosen-search input[type="text"] {
+ margin: 1px 0;
+ padding: 4px 20px 4px 5px;
+ width: 100%;
+ height: auto;
+ outline: 0;
+ border: 1px solid #aaa;
+ background: url("chosen-sprite.png") no-repeat 100% -20px;
+ font-size: 1em;
+ font-family: sans-serif;
+ line-height: normal;
+ border-radius: 0;
+}
+
+.chosen-container-single .chosen-drop {
+ margin-top: -1px;
+ border-radius: 0 0 4px 4px;
+ background-clip: padding-box;
+}
+
+.chosen-container-single.chosen-container-single-nosearch .chosen-search {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ -webkit-clip-path: inset(100% 100%);
+ clip-path: inset(100% 100%);
+}
+
+/* @end */
+/* @group Results */
+.chosen-container .chosen-results {
+ color: #444;
+ position: relative;
+ overflow-x: hidden;
+ overflow-y: auto;
+ margin: 0 4px 4px 0;
+ padding: 0 0 0 4px;
+ max-height: 240px;
+ -webkit-overflow-scrolling: touch;
+}
+
+.chosen-container .chosen-results li {
+ display: none;
+ margin: 0;
+ padding: 5px 6px;
+ list-style: none;
+ line-height: 15px;
+ word-wrap: break-word;
+ -webkit-touch-callout: none;
+}
+
+.chosen-container .chosen-results li.active-result {
+ display: list-item;
+ cursor: pointer;
+}
+
+.chosen-container .chosen-results li.disabled-result {
+ display: list-item;
+ color: #ccc;
+ cursor: default;
+}
+
+.chosen-container .chosen-results li.highlighted {
+ background-color: #3875d7;
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
+ background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
+ color: #fff;
+}
+
+.chosen-container .chosen-results li.no-results {
+ color: #777;
+ display: list-item;
+ background: #f4f4f4;
+}
+
+.chosen-container .chosen-results li.group-result {
+ display: list-item;
+ font-weight: bold;
+ cursor: default;
+}
+
+.chosen-container .chosen-results li.group-option {
+ padding-left: 15px;
+}
+
+.chosen-container .chosen-results li em {
+ font-style: normal;
+ text-decoration: underline;
+}
+
+/* @end */
+/* @group Multi Chosen */
+.chosen-container-multi .chosen-choices {
+ position: relative;
+ overflow: hidden;
+ margin: 0;
+ padding: 0 5px;
+ width: 100%;
+ height: auto;
+ border: 1px solid #aaa;
+ background-color: #fff;
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(1%, #eee), color-stop(15%, #fff));
+ background-image: linear-gradient(#eee 1%, #fff 15%);
+ cursor: text;
+}
+
+.chosen-container-multi .chosen-choices li {
+ float: left;
+ list-style: none;
+}
+
+.chosen-container-multi .chosen-choices li.search-field {
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
+ margin: 1px 0;
+ padding: 0;
+ height: 25px;
+ outline: 0;
+ border: 0 !important;
+ background: transparent !important;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #999;
+ font-size: 100%;
+ font-family: sans-serif;
+ line-height: normal;
+ border-radius: 0;
+ width: 25px;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice {
+ position: relative;
+ margin: 3px 5px 3px 0;
+ padding: 3px 20px 3px 5px;
+ border: 1px solid #aaa;
+ max-width: 100%;
+ border-radius: 3px;
+ background-color: #eeeeee;
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), to(#eee));
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
+ background-size: 100% 19px;
+ background-repeat: repeat-x;
+ background-clip: padding-box;
+ -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
+ box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
+ color: #333;
+ line-height: 13px;
+ cursor: default;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice span {
+ word-wrap: break-word;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
+ position: absolute;
+ top: 4px;
+ right: 3px;
+ display: block;
+ width: 12px;
+ height: 12px;
+ background: url("chosen-sprite.png") -42px 1px no-repeat;
+ font-size: 1px;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
+ background-position: -42px -10px;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice-disabled {
+ padding-right: 5px;
+ border: 1px solid #ccc;
+ background-color: #e4e4e4;
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), to(#eee));
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
+ color: #666;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice-focus {
+ background: #d4d4d4;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
+ background-position: -42px -10px;
+}
+
+.chosen-container-multi .chosen-results {
+ margin: 0;
+ padding: 0;
+}
+
+.chosen-container-multi .chosen-drop .result-selected {
+ display: list-item;
+ color: #ccc;
+ cursor: default;
+}
+
+/* @end */
+/* @group Active */
+.chosen-container-active .chosen-single {
+ border: 1px solid #5897fb;
+ -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+}
+
+.chosen-container-active.chosen-with-drop .chosen-single {
+ border: 1px solid #aaa;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #eee), color-stop(80%, #fff));
+ background-image: linear-gradient(#eee 20%, #fff 80%);
+ -webkit-box-shadow: 0 1px 0 #fff inset;
+ box-shadow: 0 1px 0 #fff inset;
+}
+
+.chosen-container-active.chosen-with-drop .chosen-single div {
+ border-left: none;
+ background: transparent;
+}
+
+.chosen-container-active.chosen-with-drop .chosen-single div b {
+ background-position: -18px 2px;
+}
+
+.chosen-container-active .chosen-choices {
+ border: 1px solid #5897fb;
+ -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+}
+
+.chosen-container-active .chosen-choices li.search-field input[type="text"] {
+ color: #222 !important;
+}
+
+/* @end */
+/* @group Disabled Support */
+.chosen-disabled {
+ opacity: 0.5 !important;
+ cursor: default;
+}
+
+.chosen-disabled .chosen-single {
+ cursor: default;
+}
+
+.chosen-disabled .chosen-choices .search-choice .search-choice-close {
+ cursor: default;
+}
+
+/* @end */
+/* @group Right to Left */
+.chosen-rtl {
+ text-align: right;
+}
+
+.chosen-rtl .chosen-single {
+ overflow: visible;
+ padding: 0 8px 0 0;
+}
+
+.chosen-rtl .chosen-single span {
+ margin-right: 0;
+ margin-left: 26px;
+ direction: rtl;
+}
+
+.chosen-rtl .chosen-single-with-deselect span {
+ margin-left: 38px;
+}
+
+.chosen-rtl .chosen-single div {
+ right: auto;
+ left: 3px;
+}
+
+.chosen-rtl .chosen-single abbr {
+ right: auto;
+ left: 26px;
+}
+
+.chosen-rtl .chosen-choices li {
+ float: right;
+}
+
+.chosen-rtl .chosen-choices li.search-field input[type="text"] {
+ direction: rtl;
+}
+
+.chosen-rtl .chosen-choices li.search-choice {
+ margin: 3px 5px 3px 0;
+ padding: 3px 5px 3px 19px;
+}
+
+.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
+ right: auto;
+ left: 4px;
+}
+
+.chosen-rtl.chosen-container-single .chosen-results {
+ margin: 0 0 4px 4px;
+ padding: 0 4px 0 0;
+}
+
+.chosen-rtl .chosen-results li.group-option {
+ padding-right: 15px;
+ padding-left: 0;
+}
+
+.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
+ border-right: none;
+}
+
+.chosen-rtl .chosen-search input[type="text"] {
+ padding: 4px 5px 4px 20px;
+ background: url("chosen-sprite.png") no-repeat -30px -20px;
+ direction: rtl;
+}
+
+.chosen-rtl.chosen-container-single .chosen-single div b {
+ background-position: 6px 2px;
+}
+
+.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
+ background-position: -12px 2px;
+}
+
+/* @end */
+/* @group Retina compatibility */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
+ .chosen-rtl .chosen-search input[type="text"],
+ .chosen-container-single .chosen-single abbr,
+ .chosen-container-single .chosen-single div b,
+ .chosen-container-single .chosen-search input[type="text"],
+ .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
+ .chosen-container .chosen-results-scroll-down span,
+ .chosen-container .chosen-results-scroll-up span {
+ background-image: url("chosen-sprite@2x.png") !important;
+ background-size: 52px 37px !important;
+ background-repeat: no-repeat !important;
+ }
+}
+
+/* @end */
diff --git a/WebLab/script/chosen/chosen.jquery.js b/WebLab/script/chosen/chosen.jquery.js
new file mode 100644
index 0000000..5f2df67
--- /dev/null
+++ b/WebLab/script/chosen/chosen.jquery.js
@@ -0,0 +1,1359 @@
+/*!
+Chosen, a Select Box Enhancer for jQuery and Prototype
+by Patrick Filler for Harvest, http://getharvest.com
+
+Version 1.8.7
+Full source at https://github.com/harvesthq/chosen
+Copyright (c) 2011-2018 Harvest http://getharvest.com
+
+MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
+This file is generated by `grunt build`, do not edit it by hand.
+*/
+
+(function() {
+ var $, AbstractChosen, Chosen, SelectParser,
+ bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+ extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+ hasProp = {}.hasOwnProperty;
+
+ SelectParser = (function() {
+ function SelectParser() {
+ this.options_index = 0;
+ this.parsed = [];
+ }
+
+ SelectParser.prototype.add_node = function(child) {
+ if (child.nodeName.toUpperCase() === "OPTGROUP") {
+ return this.add_group(child);
+ } else {
+ return this.add_option(child);
+ }
+ };
+
+ SelectParser.prototype.add_group = function(group) {
+ var group_position, i, len, option, ref, results1;
+ group_position = this.parsed.length;
+ this.parsed.push({
+ array_index: group_position,
+ group: true,
+ label: group.label,
+ title: group.title ? group.title : void 0,
+ children: 0,
+ disabled: group.disabled,
+ classes: group.className
+ });
+ ref = group.childNodes;
+ results1 = [];
+ for (i = 0, len = ref.length; i < len; i++) {
+ option = ref[i];
+ results1.push(this.add_option(option, group_position, group.disabled));
+ }
+ return results1;
+ };
+
+ SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
+ if (option.nodeName.toUpperCase() === "OPTION") {
+ if (option.text !== "") {
+ if (group_position != null) {
+ this.parsed[group_position].children += 1;
+ }
+ this.parsed.push({
+ array_index: this.parsed.length,
+ options_index: this.options_index,
+ value: option.value,
+ text: option.text,
+ html: option.innerHTML,
+ title: option.title ? option.title : void 0,
+ selected: option.selected,
+ disabled: group_disabled === true ? group_disabled : option.disabled,
+ group_array_index: group_position,
+ group_label: group_position != null ? this.parsed[group_position].label : null,
+ classes: option.className,
+ style: option.style.cssText
+ });
+ } else {
+ this.parsed.push({
+ array_index: this.parsed.length,
+ options_index: this.options_index,
+ empty: true
+ });
+ }
+ return this.options_index += 1;
+ }
+ };
+
+ return SelectParser;
+
+ })();
+
+ SelectParser.select_to_array = function(select) {
+ var child, i, len, parser, ref;
+ parser = new SelectParser();
+ ref = select.childNodes;
+ for (i = 0, len = ref.length; i < len; i++) {
+ child = ref[i];
+ parser.add_node(child);
+ }
+ return parser.parsed;
+ };
+
+ AbstractChosen = (function() {
+ function AbstractChosen(form_field, options1) {
+ this.form_field = form_field;
+ this.options = options1 != null ? options1 : {};
+ this.label_click_handler = bind(this.label_click_handler, this);
+ if (!AbstractChosen.browser_is_supported()) {
+ return;
+ }
+ this.is_multiple = this.form_field.multiple;
+ this.set_default_text();
+ this.set_default_values();
+ this.setup();
+ this.set_up_html();
+ this.register_observers();
+ this.on_ready();
+ }
+
+ AbstractChosen.prototype.set_default_values = function() {
+ this.click_test_action = (function(_this) {
+ return function(evt) {
+ return _this.test_active_click(evt);
+ };
+ })(this);
+ this.activate_action = (function(_this) {
+ return function(evt) {
+ return _this.activate_field(evt);
+ };
+ })(this);
+ this.active_field = false;
+ this.mouse_on_container = false;
+ this.results_showing = false;
+ this.result_highlighted = null;
+ this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className);
+ this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
+ this.disable_search_threshold = this.options.disable_search_threshold || 0;
+ this.disable_search = this.options.disable_search || false;
+ this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
+ this.group_search = this.options.group_search != null ? this.options.group_search : true;
+ this.search_contains = this.options.search_contains || false;
+ this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
+ this.max_selected_options = this.options.max_selected_options || Infinity;
+ this.inherit_select_classes = this.options.inherit_select_classes || false;
+ this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
+ this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
+ this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
+ this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
+ this.case_sensitive_search = this.options.case_sensitive_search || false;
+ return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
+ };
+
+ AbstractChosen.prototype.set_default_text = function() {
+ if (this.form_field.getAttribute("data-placeholder")) {
+ this.default_text = this.form_field.getAttribute("data-placeholder");
+ } else if (this.is_multiple) {
+ this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
+ } else {
+ this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
+ }
+ this.default_text = this.escape_html(this.default_text);
+ return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
+ };
+
+ AbstractChosen.prototype.choice_label = function(item) {
+ if (this.include_group_label_in_selected && (item.group_label != null)) {
+ return "" + (this.escape_html(item.group_label)) + "" + item.html;
+ } else {
+ return item.html;
+ }
+ };
+
+ AbstractChosen.prototype.mouse_enter = function() {
+ return this.mouse_on_container = true;
+ };
+
+ AbstractChosen.prototype.mouse_leave = function() {
+ return this.mouse_on_container = false;
+ };
+
+ AbstractChosen.prototype.input_focus = function(evt) {
+ if (this.is_multiple) {
+ if (!this.active_field) {
+ return setTimeout(((function(_this) {
+ return function() {
+ return _this.container_mousedown();
+ };
+ })(this)), 50);
+ }
+ } else {
+ if (!this.active_field) {
+ return this.activate_field();
+ }
+ }
+ };
+
+ AbstractChosen.prototype.input_blur = function(evt) {
+ if (!this.mouse_on_container) {
+ this.active_field = false;
+ return setTimeout(((function(_this) {
+ return function() {
+ return _this.blur_test();
+ };
+ })(this)), 100);
+ }
+ };
+
+ AbstractChosen.prototype.label_click_handler = function(evt) {
+ if (this.is_multiple) {
+ return this.container_mousedown(evt);
+ } else {
+ return this.activate_field();
+ }
+ };
+
+ AbstractChosen.prototype.results_option_build = function(options) {
+ var content, data, data_content, i, len, ref, shown_results;
+ content = '';
+ shown_results = 0;
+ ref = this.results_data;
+ for (i = 0, len = ref.length; i < len; i++) {
+ data = ref[i];
+ data_content = '';
+ if (data.group) {
+ data_content = this.result_add_group(data);
+ } else {
+ data_content = this.result_add_option(data);
+ }
+ if (data_content !== '') {
+ shown_results++;
+ content += data_content;
+ }
+ if (options != null ? options.first : void 0) {
+ if (data.selected && this.is_multiple) {
+ this.choice_build(data);
+ } else if (data.selected && !this.is_multiple) {
+ this.single_set_selected_text(this.choice_label(data));
+ }
+ }
+ if (shown_results >= this.max_shown_results) {
+ break;
+ }
+ }
+ return content;
+ };
+
+ AbstractChosen.prototype.result_add_option = function(option) {
+ var classes, option_el;
+ if (!option.search_match) {
+ return '';
+ }
+ if (!this.include_option_in_results(option)) {
+ return '';
+ }
+ classes = [];
+ if (!option.disabled && !(option.selected && this.is_multiple)) {
+ classes.push("active-result");
+ }
+ if (option.disabled && !(option.selected && this.is_multiple)) {
+ classes.push("disabled-result");
+ }
+ if (option.selected) {
+ classes.push("result-selected");
+ }
+ if (option.group_array_index != null) {
+ classes.push("group-option");
+ }
+ if (option.classes !== "") {
+ classes.push(option.classes);
+ }
+ option_el = document.createElement("li");
+ option_el.className = classes.join(" ");
+ if (option.style) {
+ option_el.style.cssText = option.style;
+ }
+ option_el.setAttribute("data-option-array-index", option.array_index);
+ option_el.innerHTML = option.highlighted_html || option.html;
+ if (option.title) {
+ option_el.title = option.title;
+ }
+ return this.outerHTML(option_el);
+ };
+
+ AbstractChosen.prototype.result_add_group = function(group) {
+ var classes, group_el;
+ if (!(group.search_match || group.group_match)) {
+ return '';
+ }
+ if (!(group.active_options > 0)) {
+ return '';
+ }
+ classes = [];
+ classes.push("group-result");
+ if (group.classes) {
+ classes.push(group.classes);
+ }
+ group_el = document.createElement("li");
+ group_el.className = classes.join(" ");
+ group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);
+ if (group.title) {
+ group_el.title = group.title;
+ }
+ return this.outerHTML(group_el);
+ };
+
+ AbstractChosen.prototype.results_update_field = function() {
+ this.set_default_text();
+ if (!this.is_multiple) {
+ this.results_reset_cleanup();
+ }
+ this.result_clear_highlight();
+ this.results_build();
+ if (this.results_showing) {
+ return this.winnow_results();
+ }
+ };
+
+ AbstractChosen.prototype.reset_single_select_options = function() {
+ var i, len, ref, result, results1;
+ ref = this.results_data;
+ results1 = [];
+ for (i = 0, len = ref.length; i < len; i++) {
+ result = ref[i];
+ if (result.selected) {
+ results1.push(result.selected = false);
+ } else {
+ results1.push(void 0);
+ }
+ }
+ return results1;
+ };
+
+ AbstractChosen.prototype.results_toggle = function() {
+ if (this.results_showing) {
+ return this.results_hide();
+ } else {
+ return this.results_show();
+ }
+ };
+
+ AbstractChosen.prototype.results_search = function(evt) {
+ if (this.results_showing) {
+ return this.winnow_results();
+ } else {
+ return this.results_show();
+ }
+ };
+
+ AbstractChosen.prototype.winnow_results = function(options) {
+ var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
+ this.no_results_clear();
+ results = 0;
+ query = this.get_search_text();
+ escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ regex = this.get_search_regex(escapedQuery);
+ ref = this.results_data;
+ for (i = 0, len = ref.length; i < len; i++) {
+ option = ref[i];
+ option.search_match = false;
+ results_group = null;
+ search_match = null;
+ option.highlighted_html = '';
+ if (this.include_option_in_results(option)) {
+ if (option.group) {
+ option.group_match = false;
+ option.active_options = 0;
+ }
+ if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
+ results_group = this.results_data[option.group_array_index];
+ if (results_group.active_options === 0 && results_group.search_match) {
+ results += 1;
+ }
+ results_group.active_options += 1;
+ }
+ text = option.group ? option.label : option.text;
+ if (!(option.group && !this.group_search)) {
+ search_match = this.search_string_match(text, regex);
+ option.search_match = search_match != null;
+ if (option.search_match && !option.group) {
+ results += 1;
+ }
+ if (option.search_match) {
+ if (query.length) {
+ startpos = search_match.index;
+ prefix = text.slice(0, startpos);
+ fix = text.slice(startpos, startpos + query.length);
+ suffix = text.slice(startpos + query.length);
+ option.highlighted_html = (this.escape_html(prefix)) + "" + (this.escape_html(fix)) + "" + (this.escape_html(suffix));
+ }
+ if (results_group != null) {
+ results_group.group_match = true;
+ }
+ } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
+ option.search_match = true;
+ }
+ }
+ }
+ }
+ this.result_clear_highlight();
+ if (results < 1 && query.length) {
+ this.update_results_content("");
+ return this.no_results(query);
+ } else {
+ this.update_results_content(this.results_option_build());
+ if (!(options != null ? options.skip_highlight : void 0)) {
+ return this.winnow_results_set_highlight();
+ }
+ }
+ };
+
+ AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
+ var regex_flag, regex_string;
+ regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*";
+ if (!(this.enable_split_word_search || this.search_contains)) {
+ regex_string = "^" + regex_string;
+ }
+ regex_flag = this.case_sensitive_search ? "" : "i";
+ return new RegExp(regex_string, regex_flag);
+ };
+
+ AbstractChosen.prototype.search_string_match = function(search_string, regex) {
+ var match;
+ match = regex.exec(search_string);
+ if (!this.search_contains && (match != null ? match[1] : void 0)) {
+ match.index += 1;
+ }
+ return match;
+ };
+
+ AbstractChosen.prototype.choices_count = function() {
+ var i, len, option, ref;
+ if (this.selected_option_count != null) {
+ return this.selected_option_count;
+ }
+ this.selected_option_count = 0;
+ ref = this.form_field.options;
+ for (i = 0, len = ref.length; i < len; i++) {
+ option = ref[i];
+ if (option.selected) {
+ this.selected_option_count += 1;
+ }
+ }
+ return this.selected_option_count;
+ };
+
+ AbstractChosen.prototype.choices_click = function(evt) {
+ evt.preventDefault();
+ this.activate_field();
+ if (!(this.results_showing || this.is_disabled)) {
+ return this.results_show();
+ }
+ };
+
+ AbstractChosen.prototype.keydown_checker = function(evt) {
+ var ref, stroke;
+ stroke = (ref = evt.which) != null ? ref : evt.keyCode;
+ this.search_field_scale();
+ if (stroke !== 8 && this.pending_backstroke) {
+ this.clear_backstroke();
+ }
+ switch (stroke) {
+ case 8:
+ this.backstroke_length = this.get_search_field_value().length;
+ break;
+ case 9:
+ if (this.results_showing && !this.is_multiple) {
+ this.result_select(evt);
+ }
+ this.mouse_on_container = false;
+ break;
+ case 13:
+ if (this.results_showing) {
+ evt.preventDefault();
+ }
+ break;
+ case 27:
+ if (this.results_showing) {
+ evt.preventDefault();
+ }
+ break;
+ case 32:
+ if (this.disable_search) {
+ evt.preventDefault();
+ }
+ break;
+ case 38:
+ evt.preventDefault();
+ this.keyup_arrow();
+ break;
+ case 40:
+ evt.preventDefault();
+ this.keydown_arrow();
+ break;
+ }
+ };
+
+ AbstractChosen.prototype.keyup_checker = function(evt) {
+ var ref, stroke;
+ stroke = (ref = evt.which) != null ? ref : evt.keyCode;
+ this.search_field_scale();
+ switch (stroke) {
+ case 8:
+ if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
+ this.keydown_backstroke();
+ } else if (!this.pending_backstroke) {
+ this.result_clear_highlight();
+ this.results_search();
+ }
+ break;
+ case 13:
+ evt.preventDefault();
+ if (this.results_showing) {
+ this.result_select(evt);
+ }
+ break;
+ case 27:
+ if (this.results_showing) {
+ this.results_hide();
+ }
+ break;
+ case 9:
+ case 16:
+ case 17:
+ case 18:
+ case 38:
+ case 40:
+ case 91:
+ break;
+ default:
+ this.results_search();
+ break;
+ }
+ };
+
+ AbstractChosen.prototype.clipboard_event_checker = function(evt) {
+ if (this.is_disabled) {
+ return;
+ }
+ return setTimeout(((function(_this) {
+ return function() {
+ return _this.results_search();
+ };
+ })(this)), 50);
+ };
+
+ AbstractChosen.prototype.container_width = function() {
+ if (this.options.width != null) {
+ return this.options.width;
+ } else {
+ return this.form_field.offsetWidth + "px";
+ }
+ };
+
+ AbstractChosen.prototype.include_option_in_results = function(option) {
+ if (this.is_multiple && (!this.display_selected_options && option.selected)) {
+ return false;
+ }
+ if (!this.display_disabled_options && option.disabled) {
+ return false;
+ }
+ if (option.empty) {
+ return false;
+ }
+ return true;
+ };
+
+ AbstractChosen.prototype.search_results_touchstart = function(evt) {
+ this.touch_started = true;
+ return this.search_results_mouseover(evt);
+ };
+
+ AbstractChosen.prototype.search_results_touchmove = function(evt) {
+ this.touch_started = false;
+ return this.search_results_mouseout(evt);
+ };
+
+ AbstractChosen.prototype.search_results_touchend = function(evt) {
+ if (this.touch_started) {
+ return this.search_results_mouseup(evt);
+ }
+ };
+
+ AbstractChosen.prototype.outerHTML = function(element) {
+ var tmp;
+ if (element.outerHTML) {
+ return element.outerHTML;
+ }
+ tmp = document.createElement("div");
+ tmp.appendChild(element);
+ return tmp.innerHTML;
+ };
+
+ AbstractChosen.prototype.get_single_html = function() {
+ return "\n " + this.default_text + "\n
\n\n";
+ };
+
+ AbstractChosen.prototype.get_multi_html = function() {
+ return "\n";
+ };
+
+ AbstractChosen.prototype.get_no_results_html = function(terms) {
+ return "\n " + this.results_none_found + " " + (this.escape_html(terms)) + "\n";
+ };
+
+ AbstractChosen.browser_is_supported = function() {
+ if ("Microsoft Internet Explorer" === window.navigator.appName) {
+ return document.documentMode >= 8;
+ }
+ if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
+ return false;
+ }
+ return true;
+ };
+
+ AbstractChosen.default_multiple_text = "Select Some Options";
+
+ AbstractChosen.default_single_text = "Select an Option";
+
+ AbstractChosen.default_no_result_text = "No results match";
+
+ return AbstractChosen;
+
+ })();
+
+ $ = jQuery;
+
+ $.fn.extend({
+ chosen: function(options) {
+ if (!AbstractChosen.browser_is_supported()) {
+ return this;
+ }
+ return this.each(function(input_field) {
+ var $this, chosen;
+ $this = $(this);
+ chosen = $this.data('chosen');
+ if (options === 'destroy') {
+ if (chosen instanceof Chosen) {
+ chosen.destroy();
+ }
+ return;
+ }
+ if (!(chosen instanceof Chosen)) {
+ $this.data('chosen', new Chosen(this, options));
+ }
+ });
+ }
+ });
+
+ Chosen = (function(superClass) {
+ extend(Chosen, superClass);
+
+ function Chosen() {
+ return Chosen.__super__.constructor.apply(this, arguments);
+ }
+
+ Chosen.prototype.setup = function() {
+ this.form_field_jq = $(this.form_field);
+ return this.current_selectedIndex = this.form_field.selectedIndex;
+ };
+
+ Chosen.prototype.set_up_html = function() {
+ var container_classes, container_props;
+ container_classes = ["chosen-container"];
+ container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
+ if (this.inherit_select_classes && this.form_field.className) {
+ container_classes.push(this.form_field.className);
+ }
+ if (this.is_rtl) {
+ container_classes.push("chosen-rtl");
+ }
+ container_props = {
+ 'class': container_classes.join(' '),
+ 'title': this.form_field.title
+ };
+ if (this.form_field.id.length) {
+ container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
+ }
+ this.container = $("", container_props);
+ this.container.width(this.container_width());
+ if (this.is_multiple) {
+ this.container.html(this.get_multi_html());
+ } else {
+ this.container.html(this.get_single_html());
+ }
+ this.form_field_jq.hide().after(this.container);
+ this.dropdown = this.container.find('div.chosen-drop').first();
+ this.search_field = this.container.find('input').first();
+ this.search_results = this.container.find('ul.chosen-results').first();
+ this.search_field_scale();
+ this.search_no_results = this.container.find('li.no-results').first();
+ if (this.is_multiple) {
+ this.search_choices = this.container.find('ul.chosen-choices').first();
+ this.search_container = this.container.find('li.search-field').first();
+ } else {
+ this.search_container = this.container.find('div.chosen-search').first();
+ this.selected_item = this.container.find('.chosen-single').first();
+ }
+ this.results_build();
+ this.set_tab_index();
+ return this.set_label_behavior();
+ };
+
+ Chosen.prototype.on_ready = function() {
+ return this.form_field_jq.trigger("chosen:ready", {
+ chosen: this
+ });
+ };
+
+ Chosen.prototype.register_observers = function() {
+ this.container.on('touchstart.chosen', (function(_this) {
+ return function(evt) {
+ _this.container_mousedown(evt);
+ };
+ })(this));
+ this.container.on('touchend.chosen', (function(_this) {
+ return function(evt) {
+ _this.container_mouseup(evt);
+ };
+ })(this));
+ this.container.on('mousedown.chosen', (function(_this) {
+ return function(evt) {
+ _this.container_mousedown(evt);
+ };
+ })(this));
+ this.container.on('mouseup.chosen', (function(_this) {
+ return function(evt) {
+ _this.container_mouseup(evt);
+ };
+ })(this));
+ this.container.on('mouseenter.chosen', (function(_this) {
+ return function(evt) {
+ _this.mouse_enter(evt);
+ };
+ })(this));
+ this.container.on('mouseleave.chosen', (function(_this) {
+ return function(evt) {
+ _this.mouse_leave(evt);
+ };
+ })(this));
+ this.search_results.on('mouseup.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_mouseup(evt);
+ };
+ })(this));
+ this.search_results.on('mouseover.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_mouseover(evt);
+ };
+ })(this));
+ this.search_results.on('mouseout.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_mouseout(evt);
+ };
+ })(this));
+ this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_mousewheel(evt);
+ };
+ })(this));
+ this.search_results.on('touchstart.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_touchstart(evt);
+ };
+ })(this));
+ this.search_results.on('touchmove.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_touchmove(evt);
+ };
+ })(this));
+ this.search_results.on('touchend.chosen', (function(_this) {
+ return function(evt) {
+ _this.search_results_touchend(evt);
+ };
+ })(this));
+ this.form_field_jq.on("chosen:updated.chosen", (function(_this) {
+ return function(evt) {
+ _this.results_update_field(evt);
+ };
+ })(this));
+ this.form_field_jq.on("chosen:activate.chosen", (function(_this) {
+ return function(evt) {
+ _this.activate_field(evt);
+ };
+ })(this));
+ this.form_field_jq.on("chosen:open.chosen", (function(_this) {
+ return function(evt) {
+ _this.container_mousedown(evt);
+ };
+ })(this));
+ this.form_field_jq.on("chosen:close.chosen", (function(_this) {
+ return function(evt) {
+ _this.close_field(evt);
+ };
+ })(this));
+ this.search_field.on('blur.chosen', (function(_this) {
+ return function(evt) {
+ _this.input_blur(evt);
+ };
+ })(this));
+ this.search_field.on('keyup.chosen', (function(_this) {
+ return function(evt) {
+ _this.keyup_checker(evt);
+ };
+ })(this));
+ this.search_field.on('keydown.chosen', (function(_this) {
+ return function(evt) {
+ _this.keydown_checker(evt);
+ };
+ })(this));
+ this.search_field.on('focus.chosen', (function(_this) {
+ return function(evt) {
+ _this.input_focus(evt);
+ };
+ })(this));
+ this.search_field.on('cut.chosen', (function(_this) {
+ return function(evt) {
+ _this.clipboard_event_checker(evt);
+ };
+ })(this));
+ this.search_field.on('paste.chosen', (function(_this) {
+ return function(evt) {
+ _this.clipboard_event_checker(evt);
+ };
+ })(this));
+ if (this.is_multiple) {
+ return this.search_choices.on('click.chosen', (function(_this) {
+ return function(evt) {
+ _this.choices_click(evt);
+ };
+ })(this));
+ } else {
+ return this.container.on('click.chosen', function(evt) {
+ evt.preventDefault();
+ });
+ }
+ };
+
+ Chosen.prototype.destroy = function() {
+ $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action);
+ if (this.form_field_label.length > 0) {
+ this.form_field_label.off('click.chosen');
+ }
+ if (this.search_field[0].tabIndex) {
+ this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
+ }
+ this.container.remove();
+ this.form_field_jq.removeData('chosen');
+ return this.form_field_jq.show();
+ };
+
+ Chosen.prototype.search_field_disabled = function() {
+ this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled');
+ this.container.toggleClass('chosen-disabled', this.is_disabled);
+ this.search_field[0].disabled = this.is_disabled;
+ if (!this.is_multiple) {
+ this.selected_item.off('focus.chosen', this.activate_field);
+ }
+ if (this.is_disabled) {
+ return this.close_field();
+ } else if (!this.is_multiple) {
+ return this.selected_item.on('focus.chosen', this.activate_field);
+ }
+ };
+
+ Chosen.prototype.container_mousedown = function(evt) {
+ var ref;
+ if (this.is_disabled) {
+ return;
+ }
+ if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {
+ evt.preventDefault();
+ }
+ if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
+ if (!this.active_field) {
+ if (this.is_multiple) {
+ this.search_field.val("");
+ }
+ $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action);
+ this.results_show();
+ } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
+ evt.preventDefault();
+ this.results_toggle();
+ }
+ return this.activate_field();
+ }
+ };
+
+ Chosen.prototype.container_mouseup = function(evt) {
+ if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
+ return this.results_reset(evt);
+ }
+ };
+
+ Chosen.prototype.search_results_mousewheel = function(evt) {
+ var delta;
+ if (evt.originalEvent) {
+ delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
+ }
+ if (delta != null) {
+ evt.preventDefault();
+ if (evt.type === 'DOMMouseScroll') {
+ delta = delta * 40;
+ }
+ return this.search_results.scrollTop(delta + this.search_results.scrollTop());
+ }
+ };
+
+ Chosen.prototype.blur_test = function(evt) {
+ if (!this.active_field && this.container.hasClass("chosen-container-active")) {
+ return this.close_field();
+ }
+ };
+
+ Chosen.prototype.close_field = function() {
+ $(this.container[0].ownerDocument).off("click.chosen", this.click_test_action);
+ this.active_field = false;
+ this.results_hide();
+ this.container.removeClass("chosen-container-active");
+ this.clear_backstroke();
+ this.show_search_field_default();
+ this.search_field_scale();
+ return this.search_field.blur();
+ };
+
+ Chosen.prototype.activate_field = function() {
+ if (this.is_disabled) {
+ return;
+ }
+ this.container.addClass("chosen-container-active");
+ this.active_field = true;
+ this.search_field.val(this.search_field.val());
+ return this.search_field.focus();
+ };
+
+ Chosen.prototype.test_active_click = function(evt) {
+ var active_container;
+ active_container = $(evt.target).closest('.chosen-container');
+ if (active_container.length && this.container[0] === active_container[0]) {
+ return this.active_field = true;
+ } else {
+ return this.close_field();
+ }
+ };
+
+ Chosen.prototype.results_build = function() {
+ this.parsing = true;
+ this.selected_option_count = null;
+ this.results_data = SelectParser.select_to_array(this.form_field);
+ if (this.is_multiple) {
+ this.search_choices.find("li.search-choice").remove();
+ } else {
+ this.single_set_selected_text();
+ if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
+ this.search_field[0].readOnly = true;
+ this.container.addClass("chosen-container-single-nosearch");
+ } else {
+ this.search_field[0].readOnly = false;
+ this.container.removeClass("chosen-container-single-nosearch");
+ }
+ }
+ this.update_results_content(this.results_option_build({
+ first: true
+ }));
+ this.search_field_disabled();
+ this.show_search_field_default();
+ this.search_field_scale();
+ return this.parsing = false;
+ };
+
+ Chosen.prototype.result_do_highlight = function(el) {
+ var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
+ if (el.length) {
+ this.result_clear_highlight();
+ this.result_highlight = el;
+ this.result_highlight.addClass("highlighted");
+ maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
+ visible_top = this.search_results.scrollTop();
+ visible_bottom = maxHeight + visible_top;
+ high_top = this.result_highlight.position().top + this.search_results.scrollTop();
+ high_bottom = high_top + this.result_highlight.outerHeight();
+ if (high_bottom >= visible_bottom) {
+ return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
+ } else if (high_top < visible_top) {
+ return this.search_results.scrollTop(high_top);
+ }
+ }
+ };
+
+ Chosen.prototype.result_clear_highlight = function() {
+ if (this.result_highlight) {
+ this.result_highlight.removeClass("highlighted");
+ }
+ return this.result_highlight = null;
+ };
+
+ Chosen.prototype.results_show = function() {
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
+ this.form_field_jq.trigger("chosen:maxselected", {
+ chosen: this
+ });
+ return false;
+ }
+ this.container.addClass("chosen-with-drop");
+ this.results_showing = true;
+ this.search_field.focus();
+ this.search_field.val(this.get_search_field_value());
+ this.winnow_results();
+ return this.form_field_jq.trigger("chosen:showing_dropdown", {
+ chosen: this
+ });
+ };
+
+ Chosen.prototype.update_results_content = function(content) {
+ return this.search_results.html(content);
+ };
+
+ Chosen.prototype.results_hide = function() {
+ if (this.results_showing) {
+ this.result_clear_highlight();
+ this.container.removeClass("chosen-with-drop");
+ this.form_field_jq.trigger("chosen:hiding_dropdown", {
+ chosen: this
+ });
+ }
+ return this.results_showing = false;
+ };
+
+ Chosen.prototype.set_tab_index = function(el) {
+ var ti;
+ if (this.form_field.tabIndex) {
+ ti = this.form_field.tabIndex;
+ this.form_field.tabIndex = -1;
+ return this.search_field[0].tabIndex = ti;
+ }
+ };
+
+ Chosen.prototype.set_label_behavior = function() {
+ this.form_field_label = this.form_field_jq.parents("label");
+ if (!this.form_field_label.length && this.form_field.id.length) {
+ this.form_field_label = $("label[for='" + this.form_field.id + "']");
+ }
+ if (this.form_field_label.length > 0) {
+ return this.form_field_label.on('click.chosen', this.label_click_handler);
+ }
+ };
+
+ Chosen.prototype.show_search_field_default = function() {
+ if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
+ this.search_field.val(this.default_text);
+ return this.search_field.addClass("default");
+ } else {
+ this.search_field.val("");
+ return this.search_field.removeClass("default");
+ }
+ };
+
+ Chosen.prototype.search_results_mouseup = function(evt) {
+ var target;
+ target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
+ if (target.length) {
+ this.result_highlight = target;
+ this.result_select(evt);
+ return this.search_field.focus();
+ }
+ };
+
+ Chosen.prototype.search_results_mouseover = function(evt) {
+ var target;
+ target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
+ if (target) {
+ return this.result_do_highlight(target);
+ }
+ };
+
+ Chosen.prototype.search_results_mouseout = function(evt) {
+ if ($(evt.target).hasClass("active-result") || $(evt.target).parents('.active-result').first()) {
+ return this.result_clear_highlight();
+ }
+ };
+
+ Chosen.prototype.choice_build = function(item) {
+ var choice, close_link;
+ choice = $('', {
+ "class": "search-choice"
+ }).html("" + (this.choice_label(item)) + "");
+ if (item.disabled) {
+ choice.addClass('search-choice-disabled');
+ } else {
+ close_link = $('', {
+ "class": 'search-choice-close',
+ 'data-option-array-index': item.array_index
+ });
+ close_link.on('click.chosen', (function(_this) {
+ return function(evt) {
+ return _this.choice_destroy_link_click(evt);
+ };
+ })(this));
+ choice.append(close_link);
+ }
+ return this.search_container.before(choice);
+ };
+
+ Chosen.prototype.choice_destroy_link_click = function(evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ if (!this.is_disabled) {
+ return this.choice_destroy($(evt.target));
+ }
+ };
+
+ Chosen.prototype.choice_destroy = function(link) {
+ if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
+ if (this.active_field) {
+ this.search_field.focus();
+ } else {
+ this.show_search_field_default();
+ }
+ if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {
+ this.results_hide();
+ }
+ link.parents('li').first().remove();
+ return this.search_field_scale();
+ }
+ };
+
+ Chosen.prototype.results_reset = function() {
+ this.reset_single_select_options();
+ this.form_field.options[0].selected = true;
+ this.single_set_selected_text();
+ this.show_search_field_default();
+ this.results_reset_cleanup();
+ this.trigger_form_field_change();
+ if (this.active_field) {
+ return this.results_hide();
+ }
+ };
+
+ Chosen.prototype.results_reset_cleanup = function() {
+ this.current_selectedIndex = this.form_field.selectedIndex;
+ return this.selected_item.find("abbr").remove();
+ };
+
+ Chosen.prototype.result_select = function(evt) {
+ var high, item;
+ if (this.result_highlight) {
+ high = this.result_highlight;
+ this.result_clear_highlight();
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
+ this.form_field_jq.trigger("chosen:maxselected", {
+ chosen: this
+ });
+ return false;
+ }
+ if (this.is_multiple) {
+ high.removeClass("active-result");
+ } else {
+ this.reset_single_select_options();
+ }
+ high.addClass("result-selected");
+ item = this.results_data[high[0].getAttribute("data-option-array-index")];
+ item.selected = true;
+ this.form_field.options[item.options_index].selected = true;
+ this.selected_option_count = null;
+ if (this.is_multiple) {
+ this.choice_build(item);
+ } else {
+ this.single_set_selected_text(this.choice_label(item));
+ }
+ if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
+ if (evt.metaKey || evt.ctrlKey) {
+ this.winnow_results({
+ skip_highlight: true
+ });
+ } else {
+ this.search_field.val("");
+ this.winnow_results();
+ }
+ } else {
+ this.results_hide();
+ this.show_search_field_default();
+ }
+ if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
+ this.trigger_form_field_change({
+ selected: this.form_field.options[item.options_index].value
+ });
+ }
+ this.current_selectedIndex = this.form_field.selectedIndex;
+ evt.preventDefault();
+ return this.search_field_scale();
+ }
+ };
+
+ Chosen.prototype.single_set_selected_text = function(text) {
+ if (text == null) {
+ text = this.default_text;
+ }
+ if (text === this.default_text) {
+ this.selected_item.addClass("chosen-default");
+ } else {
+ this.single_deselect_control_build();
+ this.selected_item.removeClass("chosen-default");
+ }
+ return this.selected_item.find("span").html(text);
+ };
+
+ Chosen.prototype.result_deselect = function(pos) {
+ var result_data;
+ result_data = this.results_data[pos];
+ if (!this.form_field.options[result_data.options_index].disabled) {
+ result_data.selected = false;
+ this.form_field.options[result_data.options_index].selected = false;
+ this.selected_option_count = null;
+ this.result_clear_highlight();
+ if (this.results_showing) {
+ this.winnow_results();
+ }
+ this.trigger_form_field_change({
+ deselected: this.form_field.options[result_data.options_index].value
+ });
+ this.search_field_scale();
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ Chosen.prototype.single_deselect_control_build = function() {
+ if (!this.allow_single_deselect) {
+ return;
+ }
+ if (!this.selected_item.find("abbr").length) {
+ this.selected_item.find("span").first().after("");
+ }
+ return this.selected_item.addClass("chosen-single-with-deselect");
+ };
+
+ Chosen.prototype.get_search_field_value = function() {
+ return this.search_field.val();
+ };
+
+ Chosen.prototype.get_search_text = function() {
+ return $.trim(this.get_search_field_value());
+ };
+
+ Chosen.prototype.escape_html = function(text) {
+ return $('').text(text).html();
+ };
+
+ Chosen.prototype.winnow_results_set_highlight = function() {
+ var do_high, selected_results;
+ selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
+ do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
+ if (do_high != null) {
+ return this.result_do_highlight(do_high);
+ }
+ };
+
+ Chosen.prototype.no_results = function(terms) {
+ var no_results_html;
+ no_results_html = this.get_no_results_html(terms);
+ this.search_results.append(no_results_html);
+ return this.form_field_jq.trigger("chosen:no_results", {
+ chosen: this
+ });
+ };
+
+ Chosen.prototype.no_results_clear = function() {
+ return this.search_results.find(".no-results").remove();
+ };
+
+ Chosen.prototype.keydown_arrow = function() {
+ var next_sib;
+ if (this.results_showing && this.result_highlight) {
+ next_sib = this.result_highlight.nextAll("li.active-result").first();
+ if (next_sib) {
+ return this.result_do_highlight(next_sib);
+ }
+ } else {
+ return this.results_show();
+ }
+ };
+
+ Chosen.prototype.keyup_arrow = function() {
+ var prev_sibs;
+ if (!this.results_showing && !this.is_multiple) {
+ return this.results_show();
+ } else if (this.result_highlight) {
+ prev_sibs = this.result_highlight.prevAll("li.active-result");
+ if (prev_sibs.length) {
+ return this.result_do_highlight(prev_sibs.first());
+ } else {
+ if (this.choices_count() > 0) {
+ this.results_hide();
+ }
+ return this.result_clear_highlight();
+ }
+ }
+ };
+
+ Chosen.prototype.keydown_backstroke = function() {
+ var next_available_destroy;
+ if (this.pending_backstroke) {
+ this.choice_destroy(this.pending_backstroke.find("a").first());
+ return this.clear_backstroke();
+ } else {
+ next_available_destroy = this.search_container.siblings("li.search-choice").last();
+ if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
+ this.pending_backstroke = next_available_destroy;
+ if (this.single_backstroke_delete) {
+ return this.keydown_backstroke();
+ } else {
+ return this.pending_backstroke.addClass("search-choice-focus");
+ }
+ }
+ }
+ };
+
+ Chosen.prototype.clear_backstroke = function() {
+ if (this.pending_backstroke) {
+ this.pending_backstroke.removeClass("search-choice-focus");
+ }
+ return this.pending_backstroke = null;
+ };
+
+ Chosen.prototype.search_field_scale = function() {
+ var div, i, len, style, style_block, styles, width;
+ if (!this.is_multiple) {
+ return;
+ }
+ style_block = {
+ position: 'absolute',
+ left: '-1000px',
+ top: '-1000px',
+ display: 'none',
+ whiteSpace: 'pre'
+ };
+ styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];
+ for (i = 0, len = styles.length; i < len; i++) {
+ style = styles[i];
+ style_block[style] = this.search_field.css(style);
+ }
+ div = $('').css(style_block);
+ div.text(this.get_search_field_value());
+ $('body').append(div);
+ width = div.width() + 25;
+ div.remove();
+ if (this.container.is(':visible')) {
+ width = Math.min(this.container.outerWidth() - 10, width);
+ }
+ return this.search_field.width(width);
+ };
+
+ Chosen.prototype.trigger_form_field_change = function(extra) {
+ this.form_field_jq.trigger("input", extra);
+ return this.form_field_jq.trigger("change", extra);
+ };
+
+ return Chosen;
+
+ })(AbstractChosen);
+
+}).call(this);
diff --git a/WebLab/script/chosen/chosen.jquery.min.js b/WebLab/script/chosen/chosen.jquery.min.js
new file mode 100644
index 0000000..4ad1647
--- /dev/null
+++ b/WebLab/script/chosen/chosen.jquery.min.js
@@ -0,0 +1,3 @@
+/* Chosen v1.8.7 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
+
+(function(){var t,e,s,i,n=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function s(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},o={}.hasOwnProperty;(i=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,r,o;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),o=[],s=0,i=(r=t.childNodes).length;s"+this.escape_html(t.group_label)+""+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e="",h=0,n=0,r=(o=this.results_data).length;n=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t"+this.escape_html(s)+""+this.escape_html(p)),null!=a&&(a.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'\n '+this.default_text+'\n
\n\n'},t.prototype.get_multi_html=function(){return'\n'},t.prototype.get_no_results_html=function(t){return'\n '+this.results_none_found+" "+this.escape_html(t)+"\n"},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,r;r=(n=t(this)).data("chosen"),"destroy"!==i?r instanceof s||n.data("chosen",new s(this,i)):r instanceof s&&r.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return r(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),s={"class":e.join(" "),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},n.prototype.register_observers=function(){return this.container.on("touchstart.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("touchend.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mousedown.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("mouseup.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mouseenter.chosen",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on("mouseleave.chosen",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on("mouseup.chosen",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on("mouseover.chosen",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on("mouseout.chosen",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on("touchstart.chosen",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on("touchmove.chosen",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on("touchend.chosen",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on("chosen:updated.chosen",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on("chosen:activate.chosen",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on("chosen:open.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on("chosen:close.chosen",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on("keyup.chosen",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on("keydown.chosen",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on("cut.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on("paste.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on("click.chosen",function(t){return function(e){t.choices_click(e)}}(this)):this.container.on("click.chosen",function(t){t.preventDefault()})},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||"mousedown"!==(s=e.type)&&"touchstart"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(".chosen-container")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,r;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),i=parseInt(this.search_results.css("maxHeight"),10),r=this.search_results.scrollTop(),n=i+r,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s0)return this.form_field_label.on("click.chosen",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result")||t(e.target).parents(".active-result").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t("",{"class":"search-choice"}).html(""+this.choice_label(e)+""),e.disabled?s.addClass("search-choice-disabled"):((i=t("",{"class":"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t("").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),null!=(t=e.length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},n.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,r,o,h;if(this.is_multiple){for(r={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(o=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s").css(r)).text(this.get_search_field_value()),t("body").append(e),h=e.width()+25,e.remove(),this.container.is(":visible")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},n}()}).call(this);
\ No newline at end of file
diff --git a/WebLab/script/chosen/chosen.min.css b/WebLab/script/chosen/chosen.min.css
new file mode 100644
index 0000000..1c68ebb
--- /dev/null
+++ b/WebLab/script/chosen/chosen.min.css
@@ -0,0 +1,11 @@
+/*!
+Chosen, a Select Box Enhancer for jQuery and Prototype
+by Patrick Filler for Harvest, http://getharvest.com
+
+Version 1.8.7
+Full source at https://github.com/harvesthq/chosen
+Copyright (c) 2011-2018 Harvest http://getharvest.com
+
+MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
+This file is generated by `grunt build`, do not edit it by hand.
+*/.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15);clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}.chosen-container.chosen-with-drop .chosen-drop{clip:auto;-webkit-clip-path:none;clip-path:none}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),to(#f4f4f4));background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;-webkit-box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(1%,#eee),color-stop(15%,#fff));background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:0 0!important;-webkit-box-shadow:none;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#eee),color-stop(80%,#fff));background-image:linear-gradient(#eee 20%,#fff 80%);-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
\ No newline at end of file
diff --git a/WebLab/script/chosen/chosen.proto.js b/WebLab/script/chosen/chosen.proto.js
new file mode 100644
index 0000000..a405649
--- /dev/null
+++ b/WebLab/script/chosen/chosen.proto.js
@@ -0,0 +1,1399 @@
+/*!
+Chosen, a Select Box Enhancer for jQuery and Prototype
+by Patrick Filler for Harvest, http://getharvest.com
+
+Version 1.8.7
+Full source at https://github.com/harvesthq/chosen
+Copyright (c) 2011-2018 Harvest http://getharvest.com
+
+MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
+This file is generated by `grunt build`, do not edit it by hand.
+*/
+
+(function() {
+ var AbstractChosen, SelectParser,
+ bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+ extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+ hasProp = {}.hasOwnProperty;
+
+ SelectParser = (function() {
+ function SelectParser() {
+ this.options_index = 0;
+ this.parsed = [];
+ }
+
+ SelectParser.prototype.add_node = function(child) {
+ if (child.nodeName.toUpperCase() === "OPTGROUP") {
+ return this.add_group(child);
+ } else {
+ return this.add_option(child);
+ }
+ };
+
+ SelectParser.prototype.add_group = function(group) {
+ var group_position, i, len, option, ref, results1;
+ group_position = this.parsed.length;
+ this.parsed.push({
+ array_index: group_position,
+ group: true,
+ label: group.label,
+ title: group.title ? group.title : void 0,
+ children: 0,
+ disabled: group.disabled,
+ classes: group.className
+ });
+ ref = group.childNodes;
+ results1 = [];
+ for (i = 0, len = ref.length; i < len; i++) {
+ option = ref[i];
+ results1.push(this.add_option(option, group_position, group.disabled));
+ }
+ return results1;
+ };
+
+ SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
+ if (option.nodeName.toUpperCase() === "OPTION") {
+ if (option.text !== "") {
+ if (group_position != null) {
+ this.parsed[group_position].children += 1;
+ }
+ this.parsed.push({
+ array_index: this.parsed.length,
+ options_index: this.options_index,
+ value: option.value,
+ text: option.text,
+ html: option.innerHTML,
+ title: option.title ? option.title : void 0,
+ selected: option.selected,
+ disabled: group_disabled === true ? group_disabled : option.disabled,
+ group_array_index: group_position,
+ group_label: group_position != null ? this.parsed[group_position].label : null,
+ classes: option.className,
+ style: option.style.cssText
+ });
+ } else {
+ this.parsed.push({
+ array_index: this.parsed.length,
+ options_index: this.options_index,
+ empty: true
+ });
+ }
+ return this.options_index += 1;
+ }
+ };
+
+ return SelectParser;
+
+ })();
+
+ SelectParser.select_to_array = function(select) {
+ var child, i, len, parser, ref;
+ parser = new SelectParser();
+ ref = select.childNodes;
+ for (i = 0, len = ref.length; i < len; i++) {
+ child = ref[i];
+ parser.add_node(child);
+ }
+ return parser.parsed;
+ };
+
+ AbstractChosen = (function() {
+ function AbstractChosen(form_field, options1) {
+ this.form_field = form_field;
+ this.options = options1 != null ? options1 : {};
+ this.label_click_handler = bind(this.label_click_handler, this);
+ if (!AbstractChosen.browser_is_supported()) {
+ return;
+ }
+ this.is_multiple = this.form_field.multiple;
+ this.set_default_text();
+ this.set_default_values();
+ this.setup();
+ this.set_up_html();
+ this.register_observers();
+ this.on_ready();
+ }
+
+ AbstractChosen.prototype.set_default_values = function() {
+ this.click_test_action = (function(_this) {
+ return function(evt) {
+ return _this.test_active_click(evt);
+ };
+ })(this);
+ this.activate_action = (function(_this) {
+ return function(evt) {
+ return _this.activate_field(evt);
+ };
+ })(this);
+ this.active_field = false;
+ this.mouse_on_container = false;
+ this.results_showing = false;
+ this.result_highlighted = null;
+ this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className);
+ this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
+ this.disable_search_threshold = this.options.disable_search_threshold || 0;
+ this.disable_search = this.options.disable_search || false;
+ this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
+ this.group_search = this.options.group_search != null ? this.options.group_search : true;
+ this.search_contains = this.options.search_contains || false;
+ this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
+ this.max_selected_options = this.options.max_selected_options || Infinity;
+ this.inherit_select_classes = this.options.inherit_select_classes || false;
+ this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
+ this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
+ this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
+ this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
+ this.case_sensitive_search = this.options.case_sensitive_search || false;
+ return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
+ };
+
+ AbstractChosen.prototype.set_default_text = function() {
+ if (this.form_field.getAttribute("data-placeholder")) {
+ this.default_text = this.form_field.getAttribute("data-placeholder");
+ } else if (this.is_multiple) {
+ this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
+ } else {
+ this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
+ }
+ this.default_text = this.escape_html(this.default_text);
+ return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
+ };
+
+ AbstractChosen.prototype.choice_label = function(item) {
+ if (this.include_group_label_in_selected && (item.group_label != null)) {
+ return "" + (this.escape_html(item.group_label)) + "" + item.html;
+ } else {
+ return item.html;
+ }
+ };
+
+ AbstractChosen.prototype.mouse_enter = function() {
+ return this.mouse_on_container = true;
+ };
+
+ AbstractChosen.prototype.mouse_leave = function() {
+ return this.mouse_on_container = false;
+ };
+
+ AbstractChosen.prototype.input_focus = function(evt) {
+ if (this.is_multiple) {
+ if (!this.active_field) {
+ return setTimeout(((function(_this) {
+ return function() {
+ return _this.container_mousedown();
+ };
+ })(this)), 50);
+ }
+ } else {
+ if (!this.active_field) {
+ return this.activate_field();
+ }
+ }
+ };
+
+ AbstractChosen.prototype.input_blur = function(evt) {
+ if (!this.mouse_on_container) {
+ this.active_field = false;
+ return setTimeout(((function(_this) {
+ return function() {
+ return _this.blur_test();
+ };
+ })(this)), 100);
+ }
+ };
+
+ AbstractChosen.prototype.label_click_handler = function(evt) {
+ if (this.is_multiple) {
+ return this.container_mousedown(evt);
+ } else {
+ return this.activate_field();
+ }
+ };
+
+ AbstractChosen.prototype.results_option_build = function(options) {
+ var content, data, data_content, i, len, ref, shown_results;
+ content = '';
+ shown_results = 0;
+ ref = this.results_data;
+ for (i = 0, len = ref.length; i < len; i++) {
+ data = ref[i];
+ data_content = '';
+ if (data.group) {
+ data_content = this.result_add_group(data);
+ } else {
+ data_content = this.result_add_option(data);
+ }
+ if (data_content !== '') {
+ shown_results++;
+ content += data_content;
+ }
+ if (options != null ? options.first : void 0) {
+ if (data.selected && this.is_multiple) {
+ this.choice_build(data);
+ } else if (data.selected && !this.is_multiple) {
+ this.single_set_selected_text(this.choice_label(data));
+ }
+ }
+ if (shown_results >= this.max_shown_results) {
+ break;
+ }
+ }
+ return content;
+ };
+
+ AbstractChosen.prototype.result_add_option = function(option) {
+ var classes, option_el;
+ if (!option.search_match) {
+ return '';
+ }
+ if (!this.include_option_in_results(option)) {
+ return '';
+ }
+ classes = [];
+ if (!option.disabled && !(option.selected && this.is_multiple)) {
+ classes.push("active-result");
+ }
+ if (option.disabled && !(option.selected && this.is_multiple)) {
+ classes.push("disabled-result");
+ }
+ if (option.selected) {
+ classes.push("result-selected");
+ }
+ if (option.group_array_index != null) {
+ classes.push("group-option");
+ }
+ if (option.classes !== "") {
+ classes.push(option.classes);
+ }
+ option_el = document.createElement("li");
+ option_el.className = classes.join(" ");
+ if (option.style) {
+ option_el.style.cssText = option.style;
+ }
+ option_el.setAttribute("data-option-array-index", option.array_index);
+ option_el.innerHTML = option.highlighted_html || option.html;
+ if (option.title) {
+ option_el.title = option.title;
+ }
+ return this.outerHTML(option_el);
+ };
+
+ AbstractChosen.prototype.result_add_group = function(group) {
+ var classes, group_el;
+ if (!(group.search_match || group.group_match)) {
+ return '';
+ }
+ if (!(group.active_options > 0)) {
+ return '';
+ }
+ classes = [];
+ classes.push("group-result");
+ if (group.classes) {
+ classes.push(group.classes);
+ }
+ group_el = document.createElement("li");
+ group_el.className = classes.join(" ");
+ group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);
+ if (group.title) {
+ group_el.title = group.title;
+ }
+ return this.outerHTML(group_el);
+ };
+
+ AbstractChosen.prototype.results_update_field = function() {
+ this.set_default_text();
+ if (!this.is_multiple) {
+ this.results_reset_cleanup();
+ }
+ this.result_clear_highlight();
+ this.results_build();
+ if (this.results_showing) {
+ return this.winnow_results();
+ }
+ };
+
+ AbstractChosen.prototype.reset_single_select_options = function() {
+ var i, len, ref, result, results1;
+ ref = this.results_data;
+ results1 = [];
+ for (i = 0, len = ref.length; i < len; i++) {
+ result = ref[i];
+ if (result.selected) {
+ results1.push(result.selected = false);
+ } else {
+ results1.push(void 0);
+ }
+ }
+ return results1;
+ };
+
+ AbstractChosen.prototype.results_toggle = function() {
+ if (this.results_showing) {
+ return this.results_hide();
+ } else {
+ return this.results_show();
+ }
+ };
+
+ AbstractChosen.prototype.results_search = function(evt) {
+ if (this.results_showing) {
+ return this.winnow_results();
+ } else {
+ return this.results_show();
+ }
+ };
+
+ AbstractChosen.prototype.winnow_results = function(options) {
+ var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
+ this.no_results_clear();
+ results = 0;
+ query = this.get_search_text();
+ escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ regex = this.get_search_regex(escapedQuery);
+ ref = this.results_data;
+ for (i = 0, len = ref.length; i < len; i++) {
+ option = ref[i];
+ option.search_match = false;
+ results_group = null;
+ search_match = null;
+ option.highlighted_html = '';
+ if (this.include_option_in_results(option)) {
+ if (option.group) {
+ option.group_match = false;
+ option.active_options = 0;
+ }
+ if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
+ results_group = this.results_data[option.group_array_index];
+ if (results_group.active_options === 0 && results_group.search_match) {
+ results += 1;
+ }
+ results_group.active_options += 1;
+ }
+ text = option.group ? option.label : option.text;
+ if (!(option.group && !this.group_search)) {
+ search_match = this.search_string_match(text, regex);
+ option.search_match = search_match != null;
+ if (option.search_match && !option.group) {
+ results += 1;
+ }
+ if (option.search_match) {
+ if (query.length) {
+ startpos = search_match.index;
+ prefix = text.slice(0, startpos);
+ fix = text.slice(startpos, startpos + query.length);
+ suffix = text.slice(startpos + query.length);
+ option.highlighted_html = (this.escape_html(prefix)) + "" + (this.escape_html(fix)) + "" + (this.escape_html(suffix));
+ }
+ if (results_group != null) {
+ results_group.group_match = true;
+ }
+ } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
+ option.search_match = true;
+ }
+ }
+ }
+ }
+ this.result_clear_highlight();
+ if (results < 1 && query.length) {
+ this.update_results_content("");
+ return this.no_results(query);
+ } else {
+ this.update_results_content(this.results_option_build());
+ if (!(options != null ? options.skip_highlight : void 0)) {
+ return this.winnow_results_set_highlight();
+ }
+ }
+ };
+
+ AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
+ var regex_flag, regex_string;
+ regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*";
+ if (!(this.enable_split_word_search || this.search_contains)) {
+ regex_string = "^" + regex_string;
+ }
+ regex_flag = this.case_sensitive_search ? "" : "i";
+ return new RegExp(regex_string, regex_flag);
+ };
+
+ AbstractChosen.prototype.search_string_match = function(search_string, regex) {
+ var match;
+ match = regex.exec(search_string);
+ if (!this.search_contains && (match != null ? match[1] : void 0)) {
+ match.index += 1;
+ }
+ return match;
+ };
+
+ AbstractChosen.prototype.choices_count = function() {
+ var i, len, option, ref;
+ if (this.selected_option_count != null) {
+ return this.selected_option_count;
+ }
+ this.selected_option_count = 0;
+ ref = this.form_field.options;
+ for (i = 0, len = ref.length; i < len; i++) {
+ option = ref[i];
+ if (option.selected) {
+ this.selected_option_count += 1;
+ }
+ }
+ return this.selected_option_count;
+ };
+
+ AbstractChosen.prototype.choices_click = function(evt) {
+ evt.preventDefault();
+ this.activate_field();
+ if (!(this.results_showing || this.is_disabled)) {
+ return this.results_show();
+ }
+ };
+
+ AbstractChosen.prototype.keydown_checker = function(evt) {
+ var ref, stroke;
+ stroke = (ref = evt.which) != null ? ref : evt.keyCode;
+ this.search_field_scale();
+ if (stroke !== 8 && this.pending_backstroke) {
+ this.clear_backstroke();
+ }
+ switch (stroke) {
+ case 8:
+ this.backstroke_length = this.get_search_field_value().length;
+ break;
+ case 9:
+ if (this.results_showing && !this.is_multiple) {
+ this.result_select(evt);
+ }
+ this.mouse_on_container = false;
+ break;
+ case 13:
+ if (this.results_showing) {
+ evt.preventDefault();
+ }
+ break;
+ case 27:
+ if (this.results_showing) {
+ evt.preventDefault();
+ }
+ break;
+ case 32:
+ if (this.disable_search) {
+ evt.preventDefault();
+ }
+ break;
+ case 38:
+ evt.preventDefault();
+ this.keyup_arrow();
+ break;
+ case 40:
+ evt.preventDefault();
+ this.keydown_arrow();
+ break;
+ }
+ };
+
+ AbstractChosen.prototype.keyup_checker = function(evt) {
+ var ref, stroke;
+ stroke = (ref = evt.which) != null ? ref : evt.keyCode;
+ this.search_field_scale();
+ switch (stroke) {
+ case 8:
+ if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
+ this.keydown_backstroke();
+ } else if (!this.pending_backstroke) {
+ this.result_clear_highlight();
+ this.results_search();
+ }
+ break;
+ case 13:
+ evt.preventDefault();
+ if (this.results_showing) {
+ this.result_select(evt);
+ }
+ break;
+ case 27:
+ if (this.results_showing) {
+ this.results_hide();
+ }
+ break;
+ case 9:
+ case 16:
+ case 17:
+ case 18:
+ case 38:
+ case 40:
+ case 91:
+ break;
+ default:
+ this.results_search();
+ break;
+ }
+ };
+
+ AbstractChosen.prototype.clipboard_event_checker = function(evt) {
+ if (this.is_disabled) {
+ return;
+ }
+ return setTimeout(((function(_this) {
+ return function() {
+ return _this.results_search();
+ };
+ })(this)), 50);
+ };
+
+ AbstractChosen.prototype.container_width = function() {
+ if (this.options.width != null) {
+ return this.options.width;
+ } else {
+ return this.form_field.offsetWidth + "px";
+ }
+ };
+
+ AbstractChosen.prototype.include_option_in_results = function(option) {
+ if (this.is_multiple && (!this.display_selected_options && option.selected)) {
+ return false;
+ }
+ if (!this.display_disabled_options && option.disabled) {
+ return false;
+ }
+ if (option.empty) {
+ return false;
+ }
+ return true;
+ };
+
+ AbstractChosen.prototype.search_results_touchstart = function(evt) {
+ this.touch_started = true;
+ return this.search_results_mouseover(evt);
+ };
+
+ AbstractChosen.prototype.search_results_touchmove = function(evt) {
+ this.touch_started = false;
+ return this.search_results_mouseout(evt);
+ };
+
+ AbstractChosen.prototype.search_results_touchend = function(evt) {
+ if (this.touch_started) {
+ return this.search_results_mouseup(evt);
+ }
+ };
+
+ AbstractChosen.prototype.outerHTML = function(element) {
+ var tmp;
+ if (element.outerHTML) {
+ return element.outerHTML;
+ }
+ tmp = document.createElement("div");
+ tmp.appendChild(element);
+ return tmp.innerHTML;
+ };
+
+ AbstractChosen.prototype.get_single_html = function() {
+ return "\n " + this.default_text + "\n
\n\n";
+ };
+
+ AbstractChosen.prototype.get_multi_html = function() {
+ return "\n";
+ };
+
+ AbstractChosen.prototype.get_no_results_html = function(terms) {
+ return "\n " + this.results_none_found + " " + (this.escape_html(terms)) + "\n";
+ };
+
+ AbstractChosen.browser_is_supported = function() {
+ if ("Microsoft Internet Explorer" === window.navigator.appName) {
+ return document.documentMode >= 8;
+ }
+ if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
+ return false;
+ }
+ return true;
+ };
+
+ AbstractChosen.default_multiple_text = "Select Some Options";
+
+ AbstractChosen.default_single_text = "Select an Option";
+
+ AbstractChosen.default_no_result_text = "No results match";
+
+ return AbstractChosen;
+
+ })();
+
+ this.Chosen = (function(superClass) {
+ var triggerHtmlEvent;
+
+ extend(Chosen, superClass);
+
+ function Chosen() {
+ return Chosen.__super__.constructor.apply(this, arguments);
+ }
+
+ Chosen.prototype.setup = function() {
+ return this.current_selectedIndex = this.form_field.selectedIndex;
+ };
+
+ Chosen.prototype.set_up_html = function() {
+ var container_classes, container_props;
+ container_classes = ["chosen-container"];
+ container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
+ if (this.inherit_select_classes && this.form_field.className) {
+ container_classes.push(this.form_field.className);
+ }
+ if (this.is_rtl) {
+ container_classes.push("chosen-rtl");
+ }
+ container_props = {
+ 'class': container_classes.join(' '),
+ 'title': this.form_field.title
+ };
+ if (this.form_field.id.length) {
+ container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
+ }
+ this.container = new Element('div', container_props);
+ this.container.setStyle({
+ width: this.container_width()
+ });
+ if (this.is_multiple) {
+ this.container.update(this.get_multi_html());
+ } else {
+ this.container.update(this.get_single_html());
+ }
+ this.form_field.hide().insert({
+ after: this.container
+ });
+ this.dropdown = this.container.down('div.chosen-drop');
+ this.search_field = this.container.down('input');
+ this.search_results = this.container.down('ul.chosen-results');
+ this.search_field_scale();
+ this.search_no_results = this.container.down('li.no-results');
+ if (this.is_multiple) {
+ this.search_choices = this.container.down('ul.chosen-choices');
+ this.search_container = this.container.down('li.search-field');
+ } else {
+ this.search_container = this.container.down('div.chosen-search');
+ this.selected_item = this.container.down('.chosen-single');
+ }
+ this.results_build();
+ this.set_tab_index();
+ return this.set_label_behavior();
+ };
+
+ Chosen.prototype.on_ready = function() {
+ return this.form_field.fire("chosen:ready", {
+ chosen: this
+ });
+ };
+
+ Chosen.prototype.register_observers = function() {
+ this.container.observe("touchstart", (function(_this) {
+ return function(evt) {
+ return _this.container_mousedown(evt);
+ };
+ })(this));
+ this.container.observe("touchend", (function(_this) {
+ return function(evt) {
+ return _this.container_mouseup(evt);
+ };
+ })(this));
+ this.container.observe("mousedown", (function(_this) {
+ return function(evt) {
+ return _this.container_mousedown(evt);
+ };
+ })(this));
+ this.container.observe("mouseup", (function(_this) {
+ return function(evt) {
+ return _this.container_mouseup(evt);
+ };
+ })(this));
+ this.container.observe("mouseenter", (function(_this) {
+ return function(evt) {
+ return _this.mouse_enter(evt);
+ };
+ })(this));
+ this.container.observe("mouseleave", (function(_this) {
+ return function(evt) {
+ return _this.mouse_leave(evt);
+ };
+ })(this));
+ this.search_results.observe("mouseup", (function(_this) {
+ return function(evt) {
+ return _this.search_results_mouseup(evt);
+ };
+ })(this));
+ this.search_results.observe("mouseover", (function(_this) {
+ return function(evt) {
+ return _this.search_results_mouseover(evt);
+ };
+ })(this));
+ this.search_results.observe("mouseout", (function(_this) {
+ return function(evt) {
+ return _this.search_results_mouseout(evt);
+ };
+ })(this));
+ this.search_results.observe("mousewheel", (function(_this) {
+ return function(evt) {
+ return _this.search_results_mousewheel(evt);
+ };
+ })(this));
+ this.search_results.observe("DOMMouseScroll", (function(_this) {
+ return function(evt) {
+ return _this.search_results_mousewheel(evt);
+ };
+ })(this));
+ this.search_results.observe("touchstart", (function(_this) {
+ return function(evt) {
+ return _this.search_results_touchstart(evt);
+ };
+ })(this));
+ this.search_results.observe("touchmove", (function(_this) {
+ return function(evt) {
+ return _this.search_results_touchmove(evt);
+ };
+ })(this));
+ this.search_results.observe("touchend", (function(_this) {
+ return function(evt) {
+ return _this.search_results_touchend(evt);
+ };
+ })(this));
+ this.form_field.observe("chosen:updated", (function(_this) {
+ return function(evt) {
+ return _this.results_update_field(evt);
+ };
+ })(this));
+ this.form_field.observe("chosen:activate", (function(_this) {
+ return function(evt) {
+ return _this.activate_field(evt);
+ };
+ })(this));
+ this.form_field.observe("chosen:open", (function(_this) {
+ return function(evt) {
+ return _this.container_mousedown(evt);
+ };
+ })(this));
+ this.form_field.observe("chosen:close", (function(_this) {
+ return function(evt) {
+ return _this.close_field(evt);
+ };
+ })(this));
+ this.search_field.observe("blur", (function(_this) {
+ return function(evt) {
+ return _this.input_blur(evt);
+ };
+ })(this));
+ this.search_field.observe("keyup", (function(_this) {
+ return function(evt) {
+ return _this.keyup_checker(evt);
+ };
+ })(this));
+ this.search_field.observe("keydown", (function(_this) {
+ return function(evt) {
+ return _this.keydown_checker(evt);
+ };
+ })(this));
+ this.search_field.observe("focus", (function(_this) {
+ return function(evt) {
+ return _this.input_focus(evt);
+ };
+ })(this));
+ this.search_field.observe("cut", (function(_this) {
+ return function(evt) {
+ return _this.clipboard_event_checker(evt);
+ };
+ })(this));
+ this.search_field.observe("paste", (function(_this) {
+ return function(evt) {
+ return _this.clipboard_event_checker(evt);
+ };
+ })(this));
+ if (this.is_multiple) {
+ return this.search_choices.observe("click", (function(_this) {
+ return function(evt) {
+ return _this.choices_click(evt);
+ };
+ })(this));
+ } else {
+ return this.container.observe("click", (function(_this) {
+ return function(evt) {
+ return evt.preventDefault();
+ };
+ })(this));
+ }
+ };
+
+ Chosen.prototype.destroy = function() {
+ var event, i, len, ref;
+ this.container.ownerDocument.stopObserving("click", this.click_test_action);
+ ref = ['chosen:updated', 'chosen:activate', 'chosen:open', 'chosen:close'];
+ for (i = 0, len = ref.length; i < len; i++) {
+ event = ref[i];
+ this.form_field.stopObserving(event);
+ }
+ this.container.stopObserving();
+ this.search_results.stopObserving();
+ this.search_field.stopObserving();
+ if (this.form_field_label != null) {
+ this.form_field_label.stopObserving();
+ }
+ if (this.is_multiple) {
+ this.search_choices.stopObserving();
+ this.container.select(".search-choice-close").each(function(choice) {
+ return choice.stopObserving();
+ });
+ } else {
+ this.selected_item.stopObserving();
+ }
+ if (this.search_field.tabIndex) {
+ this.form_field.tabIndex = this.search_field.tabIndex;
+ }
+ this.container.remove();
+ return this.form_field.show();
+ };
+
+ Chosen.prototype.search_field_disabled = function() {
+ var ref;
+ this.is_disabled = this.form_field.disabled || ((ref = this.form_field.up('fieldset')) != null ? ref.disabled : void 0) || false;
+ if (this.is_disabled) {
+ this.container.addClassName('chosen-disabled');
+ } else {
+ this.container.removeClassName('chosen-disabled');
+ }
+ this.search_field.disabled = this.is_disabled;
+ if (!this.is_multiple) {
+ this.selected_item.stopObserving('focus', this.activate_field);
+ }
+ if (this.is_disabled) {
+ return this.close_field();
+ } else if (!this.is_multiple) {
+ return this.selected_item.observe('focus', this.activate_field);
+ }
+ };
+
+ Chosen.prototype.container_mousedown = function(evt) {
+ var ref;
+ if (this.is_disabled) {
+ return;
+ }
+ if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {
+ evt.preventDefault();
+ }
+ if (!((evt != null) && evt.target.hasClassName("search-choice-close"))) {
+ if (!this.active_field) {
+ if (this.is_multiple) {
+ this.search_field.clear();
+ }
+ this.container.ownerDocument.observe("click", this.click_test_action);
+ this.results_show();
+ } else if (!this.is_multiple && evt && (evt.target === this.selected_item || evt.target.up("a.chosen-single"))) {
+ this.results_toggle();
+ }
+ return this.activate_field();
+ }
+ };
+
+ Chosen.prototype.container_mouseup = function(evt) {
+ if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
+ return this.results_reset(evt);
+ }
+ };
+
+ Chosen.prototype.search_results_mousewheel = function(evt) {
+ var delta;
+ delta = evt.deltaY || -evt.wheelDelta || evt.detail;
+ if (delta != null) {
+ evt.preventDefault();
+ if (evt.type === 'DOMMouseScroll') {
+ delta = delta * 40;
+ }
+ return this.search_results.scrollTop = delta + this.search_results.scrollTop;
+ }
+ };
+
+ Chosen.prototype.blur_test = function(evt) {
+ if (!this.active_field && this.container.hasClassName("chosen-container-active")) {
+ return this.close_field();
+ }
+ };
+
+ Chosen.prototype.close_field = function() {
+ this.container.ownerDocument.stopObserving("click", this.click_test_action);
+ this.active_field = false;
+ this.results_hide();
+ this.container.removeClassName("chosen-container-active");
+ this.clear_backstroke();
+ this.show_search_field_default();
+ this.search_field_scale();
+ return this.search_field.blur();
+ };
+
+ Chosen.prototype.activate_field = function() {
+ if (this.is_disabled) {
+ return;
+ }
+ this.container.addClassName("chosen-container-active");
+ this.active_field = true;
+ this.search_field.value = this.get_search_field_value();
+ return this.search_field.focus();
+ };
+
+ Chosen.prototype.test_active_click = function(evt) {
+ if (evt.target.up('.chosen-container') === this.container) {
+ return this.active_field = true;
+ } else {
+ return this.close_field();
+ }
+ };
+
+ Chosen.prototype.results_build = function() {
+ this.parsing = true;
+ this.selected_option_count = null;
+ this.results_data = SelectParser.select_to_array(this.form_field);
+ if (this.is_multiple) {
+ this.search_choices.select("li.search-choice").invoke("remove");
+ } else {
+ this.single_set_selected_text();
+ if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
+ this.search_field.readOnly = true;
+ this.container.addClassName("chosen-container-single-nosearch");
+ } else {
+ this.search_field.readOnly = false;
+ this.container.removeClassName("chosen-container-single-nosearch");
+ }
+ }
+ this.update_results_content(this.results_option_build({
+ first: true
+ }));
+ this.search_field_disabled();
+ this.show_search_field_default();
+ this.search_field_scale();
+ return this.parsing = false;
+ };
+
+ Chosen.prototype.result_do_highlight = function(el) {
+ var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
+ this.result_clear_highlight();
+ this.result_highlight = el;
+ this.result_highlight.addClassName("highlighted");
+ maxHeight = parseInt(this.search_results.getStyle('maxHeight'), 10);
+ visible_top = this.search_results.scrollTop;
+ visible_bottom = maxHeight + visible_top;
+ high_top = this.result_highlight.positionedOffset().top;
+ high_bottom = high_top + this.result_highlight.getHeight();
+ if (high_bottom >= visible_bottom) {
+ return this.search_results.scrollTop = (high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0;
+ } else if (high_top < visible_top) {
+ return this.search_results.scrollTop = high_top;
+ }
+ };
+
+ Chosen.prototype.result_clear_highlight = function() {
+ if (this.result_highlight) {
+ this.result_highlight.removeClassName('highlighted');
+ }
+ return this.result_highlight = null;
+ };
+
+ Chosen.prototype.results_show = function() {
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
+ this.form_field.fire("chosen:maxselected", {
+ chosen: this
+ });
+ return false;
+ }
+ this.container.addClassName("chosen-with-drop");
+ this.results_showing = true;
+ this.search_field.focus();
+ this.search_field.value = this.get_search_field_value();
+ this.winnow_results();
+ return this.form_field.fire("chosen:showing_dropdown", {
+ chosen: this
+ });
+ };
+
+ Chosen.prototype.update_results_content = function(content) {
+ return this.search_results.update(content);
+ };
+
+ Chosen.prototype.results_hide = function() {
+ if (this.results_showing) {
+ this.result_clear_highlight();
+ this.container.removeClassName("chosen-with-drop");
+ this.form_field.fire("chosen:hiding_dropdown", {
+ chosen: this
+ });
+ }
+ return this.results_showing = false;
+ };
+
+ Chosen.prototype.set_tab_index = function(el) {
+ var ti;
+ if (this.form_field.tabIndex) {
+ ti = this.form_field.tabIndex;
+ this.form_field.tabIndex = -1;
+ return this.search_field.tabIndex = ti;
+ }
+ };
+
+ Chosen.prototype.set_label_behavior = function() {
+ this.form_field_label = this.form_field.up("label");
+ if (this.form_field_label == null) {
+ this.form_field_label = $$("label[for='" + this.form_field.id + "']").first();
+ }
+ if (this.form_field_label != null) {
+ return this.form_field_label.observe("click", this.label_click_handler);
+ }
+ };
+
+ Chosen.prototype.show_search_field_default = function() {
+ if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
+ this.search_field.value = this.default_text;
+ return this.search_field.addClassName("default");
+ } else {
+ this.search_field.value = "";
+ return this.search_field.removeClassName("default");
+ }
+ };
+
+ Chosen.prototype.search_results_mouseup = function(evt) {
+ var target;
+ target = evt.target.hasClassName("active-result") ? evt.target : evt.target.up(".active-result");
+ if (target) {
+ this.result_highlight = target;
+ this.result_select(evt);
+ return this.search_field.focus();
+ }
+ };
+
+ Chosen.prototype.search_results_mouseover = function(evt) {
+ var target;
+ target = evt.target.hasClassName("active-result") ? evt.target : evt.target.up(".active-result");
+ if (target) {
+ return this.result_do_highlight(target);
+ }
+ };
+
+ Chosen.prototype.search_results_mouseout = function(evt) {
+ if (evt.target.hasClassName('active-result') || evt.target.up('.active-result')) {
+ return this.result_clear_highlight();
+ }
+ };
+
+ Chosen.prototype.choice_build = function(item) {
+ var choice, close_link;
+ choice = new Element('li', {
+ "class": "search-choice"
+ }).update("" + (this.choice_label(item)) + "");
+ if (item.disabled) {
+ choice.addClassName('search-choice-disabled');
+ } else {
+ close_link = new Element('a', {
+ href: '#',
+ "class": 'search-choice-close',
+ rel: item.array_index
+ });
+ close_link.observe("click", (function(_this) {
+ return function(evt) {
+ return _this.choice_destroy_link_click(evt);
+ };
+ })(this));
+ choice.insert(close_link);
+ }
+ return this.search_container.insert({
+ before: choice
+ });
+ };
+
+ Chosen.prototype.choice_destroy_link_click = function(evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ if (!this.is_disabled) {
+ return this.choice_destroy(evt.target);
+ }
+ };
+
+ Chosen.prototype.choice_destroy = function(link) {
+ if (this.result_deselect(link.readAttribute("rel"))) {
+ if (this.active_field) {
+ this.search_field.focus();
+ } else {
+ this.show_search_field_default();
+ }
+ if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {
+ this.results_hide();
+ }
+ link.up('li').remove();
+ return this.search_field_scale();
+ }
+ };
+
+ Chosen.prototype.results_reset = function() {
+ this.reset_single_select_options();
+ this.form_field.options[0].selected = true;
+ this.single_set_selected_text();
+ this.show_search_field_default();
+ this.results_reset_cleanup();
+ this.trigger_form_field_change();
+ if (this.active_field) {
+ return this.results_hide();
+ }
+ };
+
+ Chosen.prototype.results_reset_cleanup = function() {
+ var deselect_trigger;
+ this.current_selectedIndex = this.form_field.selectedIndex;
+ deselect_trigger = this.selected_item.down("abbr");
+ if (deselect_trigger) {
+ return deselect_trigger.remove();
+ }
+ };
+
+ Chosen.prototype.result_select = function(evt) {
+ var high, item;
+ if (this.result_highlight) {
+ high = this.result_highlight;
+ this.result_clear_highlight();
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
+ this.form_field.fire("chosen:maxselected", {
+ chosen: this
+ });
+ return false;
+ }
+ if (this.is_multiple) {
+ high.removeClassName("active-result");
+ } else {
+ this.reset_single_select_options();
+ }
+ high.addClassName("result-selected");
+ item = this.results_data[high.getAttribute("data-option-array-index")];
+ item.selected = true;
+ this.form_field.options[item.options_index].selected = true;
+ this.selected_option_count = null;
+ if (this.is_multiple) {
+ this.choice_build(item);
+ } else {
+ this.single_set_selected_text(this.choice_label(item));
+ }
+ if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
+ if (evt.metaKey || evt.ctrlKey) {
+ this.winnow_results({
+ skip_highlight: true
+ });
+ } else {
+ this.search_field.value = "";
+ this.winnow_results();
+ }
+ } else {
+ this.results_hide();
+ this.show_search_field_default();
+ }
+ if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
+ this.trigger_form_field_change();
+ }
+ this.current_selectedIndex = this.form_field.selectedIndex;
+ evt.preventDefault();
+ return this.search_field_scale();
+ }
+ };
+
+ Chosen.prototype.single_set_selected_text = function(text) {
+ if (text == null) {
+ text = this.default_text;
+ }
+ if (text === this.default_text) {
+ this.selected_item.addClassName("chosen-default");
+ } else {
+ this.single_deselect_control_build();
+ this.selected_item.removeClassName("chosen-default");
+ }
+ return this.selected_item.down("span").update(text);
+ };
+
+ Chosen.prototype.result_deselect = function(pos) {
+ var result_data;
+ result_data = this.results_data[pos];
+ if (!this.form_field.options[result_data.options_index].disabled) {
+ result_data.selected = false;
+ this.form_field.options[result_data.options_index].selected = false;
+ this.selected_option_count = null;
+ this.result_clear_highlight();
+ if (this.results_showing) {
+ this.winnow_results();
+ }
+ this.trigger_form_field_change();
+ this.search_field_scale();
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ Chosen.prototype.single_deselect_control_build = function() {
+ if (!this.allow_single_deselect) {
+ return;
+ }
+ if (!this.selected_item.down("abbr")) {
+ this.selected_item.down("span").insert({
+ after: ""
+ });
+ }
+ return this.selected_item.addClassName("chosen-single-with-deselect");
+ };
+
+ Chosen.prototype.get_search_field_value = function() {
+ return this.search_field.value;
+ };
+
+ Chosen.prototype.get_search_text = function() {
+ return this.get_search_field_value().strip();
+ };
+
+ Chosen.prototype.escape_html = function(text) {
+ return text.escapeHTML();
+ };
+
+ Chosen.prototype.winnow_results_set_highlight = function() {
+ var do_high;
+ if (!this.is_multiple) {
+ do_high = this.search_results.down(".result-selected.active-result");
+ }
+ if (do_high == null) {
+ do_high = this.search_results.down(".active-result");
+ }
+ if (do_high != null) {
+ return this.result_do_highlight(do_high);
+ }
+ };
+
+ Chosen.prototype.no_results = function(terms) {
+ this.search_results.insert(this.get_no_results_html(terms));
+ return this.form_field.fire("chosen:no_results", {
+ chosen: this
+ });
+ };
+
+ Chosen.prototype.no_results_clear = function() {
+ var nr, results1;
+ nr = null;
+ results1 = [];
+ while (nr = this.search_results.down(".no-results")) {
+ results1.push(nr.remove());
+ }
+ return results1;
+ };
+
+ Chosen.prototype.keydown_arrow = function() {
+ var next_sib;
+ if (this.results_showing && this.result_highlight) {
+ next_sib = this.result_highlight.next('.active-result');
+ if (next_sib) {
+ return this.result_do_highlight(next_sib);
+ }
+ } else {
+ return this.results_show();
+ }
+ };
+
+ Chosen.prototype.keyup_arrow = function() {
+ var actives, prevs, sibs;
+ if (!this.results_showing && !this.is_multiple) {
+ return this.results_show();
+ } else if (this.result_highlight) {
+ sibs = this.result_highlight.previousSiblings();
+ actives = this.search_results.select("li.active-result");
+ prevs = sibs.intersect(actives);
+ if (prevs.length) {
+ return this.result_do_highlight(prevs.first());
+ } else {
+ if (this.choices_count() > 0) {
+ this.results_hide();
+ }
+ return this.result_clear_highlight();
+ }
+ }
+ };
+
+ Chosen.prototype.keydown_backstroke = function() {
+ var next_available_destroy;
+ if (this.pending_backstroke) {
+ this.choice_destroy(this.pending_backstroke.down("a"));
+ return this.clear_backstroke();
+ } else {
+ next_available_destroy = this.search_container.siblings().last();
+ if (next_available_destroy && next_available_destroy.hasClassName("search-choice") && !next_available_destroy.hasClassName("search-choice-disabled")) {
+ this.pending_backstroke = next_available_destroy;
+ if (this.pending_backstroke) {
+ this.pending_backstroke.addClassName("search-choice-focus");
+ }
+ if (this.single_backstroke_delete) {
+ return this.keydown_backstroke();
+ } else {
+ return this.pending_backstroke.addClassName("search-choice-focus");
+ }
+ }
+ }
+ };
+
+ Chosen.prototype.clear_backstroke = function() {
+ if (this.pending_backstroke) {
+ this.pending_backstroke.removeClassName("search-choice-focus");
+ }
+ return this.pending_backstroke = null;
+ };
+
+ Chosen.prototype.search_field_scale = function() {
+ var container_width, div, i, len, style, style_block, styles, width;
+ if (!this.is_multiple) {
+ return;
+ }
+ style_block = {
+ position: 'absolute',
+ left: '-1000px',
+ top: '-1000px',
+ display: 'none',
+ whiteSpace: 'pre'
+ };
+ styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];
+ for (i = 0, len = styles.length; i < len; i++) {
+ style = styles[i];
+ style_block[style] = this.search_field.getStyle(style);
+ }
+ div = new Element('div').update(this.escape_html(this.get_search_field_value()));
+ div.setStyle(style_block);
+ document.body.appendChild(div);
+ width = div.measure('width') + 25;
+ div.remove();
+ if (container_width = this.container.getWidth()) {
+ width = Math.min(container_width - 10, width);
+ }
+ return this.search_field.setStyle({
+ width: width + 'px'
+ });
+ };
+
+ Chosen.prototype.trigger_form_field_change = function() {
+ triggerHtmlEvent(this.form_field, 'input');
+ return triggerHtmlEvent(this.form_field, 'change');
+ };
+
+ triggerHtmlEvent = function(element, eventType) {
+ var error, evt;
+ if (element.dispatchEvent) {
+ try {
+ evt = new Event(eventType, {
+ bubbles: true,
+ cancelable: true
+ });
+ } catch (error) {
+ evt = document.createEvent('HTMLEvents');
+ evt.initEvent(eventType, true, true);
+ }
+ return element.dispatchEvent(evt);
+ } else {
+ return element.fireEvent("on" + eventType, document.createEventObject());
+ }
+ };
+
+ return Chosen;
+
+ })(AbstractChosen);
+
+}).call(this);
diff --git a/WebLab/script/chosen/chosen.proto.min.js b/WebLab/script/chosen/chosen.proto.min.js
new file mode 100644
index 0000000..cbe444d
--- /dev/null
+++ b/WebLab/script/chosen/chosen.proto.min.js
@@ -0,0 +1,3 @@
+/* Chosen v1.8.7 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
+
+(function(){var e,t,s=function(e,t){return function(){return e.apply(t,arguments)}},i=function(e,t){function s(){this.constructor=e}for(var i in t)r.call(t,i)&&(e[i]=t[i]);return s.prototype=t.prototype,e.prototype=new s,e.__super__=t.prototype,e},r={}.hasOwnProperty;(t=function(){function e(){this.options_index=0,this.parsed=[]}return e.prototype.add_node=function(e){return"OPTGROUP"===e.nodeName.toUpperCase()?this.add_group(e):this.add_option(e)},e.prototype.add_group=function(e){var t,s,i,r,n,o;for(t=this.parsed.length,this.parsed.push({array_index:t,group:!0,label:e.label,title:e.title?e.title:void 0,children:0,disabled:e.disabled,classes:e.className}),o=[],s=0,i=(n=e.childNodes).length;s"+this.escape_html(e.group_label)+""+e.html:e.html},e.prototype.mouse_enter=function(){return this.mouse_on_container=!0},e.prototype.mouse_leave=function(){return this.mouse_on_container=!1},e.prototype.input_focus=function(e){if(this.is_multiple){if(!this.active_field)return setTimeout(function(e){return function(){return e.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},e.prototype.input_blur=function(e){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(e){return function(){return e.blur_test()}}(this),100)},e.prototype.label_click_handler=function(e){return this.is_multiple?this.container_mousedown(e):this.activate_field()},e.prototype.results_option_build=function(e){var t,s,i,r,n,o,l;for(t="",l=0,r=0,n=(o=this.results_data).length;r=this.max_shown_results));r++);return t},e.prototype.result_add_option=function(e){var t,s;return e.search_match&&this.include_option_in_results(e)?(t=[],e.disabled||e.selected&&this.is_multiple||t.push("active-result"),!e.disabled||e.selected&&this.is_multiple||t.push("disabled-result"),e.selected&&t.push("result-selected"),null!=e.group_array_index&&t.push("group-option"),""!==e.classes&&t.push(e.classes),s=document.createElement("li"),s.className=t.join(" "),e.style&&(s.style.cssText=e.style),s.setAttribute("data-option-array-index",e.array_index),s.innerHTML=e.highlighted_html||e.html,e.title&&(s.title=e.title),this.outerHTML(s)):""},e.prototype.result_add_group=function(e){var t,s;return(e.search_match||e.group_match)&&e.active_options>0?((t=[]).push("group-result"),e.classes&&t.push(e.classes),s=document.createElement("li"),s.className=t.join(" "),s.innerHTML=e.highlighted_html||this.escape_html(e.label),e.title&&(s.title=e.title),this.outerHTML(s)):""},e.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},e.prototype.reset_single_select_options=function(){var e,t,s,i,r;for(r=[],e=0,t=(s=this.results_data).length;e"+this.escape_html(s)+""+this.escape_html(p)),null!=_&&(_.group_match=!0)):null!=n.group_array_index&&this.results_data[n.group_array_index].search_match&&(n.search_match=!0)));return this.result_clear_highlight(),a<1&&l.length?(this.update_results_content(""),this.no_results(l)):(this.update_results_content(this.results_option_build()),(null!=e?e.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},e.prototype.get_search_regex=function(e){var t,s;return s=this.search_contains?e:"(^|\\s|\\b)"+e+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),t=this.case_sensitive_search?"":"i",new RegExp(s,t)},e.prototype.search_string_match=function(e,t){var s;return s=t.exec(e),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},e.prototype.choices_count=function(){var e,t,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,e=0,t=(s=this.form_field.options).length;e0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:e.preventDefault(),this.results_showing&&this.result_select(e);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},e.prototype.clipboard_event_checker=function(e){if(!this.is_disabled)return setTimeout(function(e){return function(){return e.results_search()}}(this),50)},e.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},e.prototype.include_option_in_results=function(e){return!(this.is_multiple&&!this.display_selected_options&&e.selected)&&(!(!this.display_disabled_options&&e.disabled)&&!e.empty)},e.prototype.search_results_touchstart=function(e){return this.touch_started=!0,this.search_results_mouseover(e)},e.prototype.search_results_touchmove=function(e){return this.touch_started=!1,this.search_results_mouseout(e)},e.prototype.search_results_touchend=function(e){if(this.touch_started)return this.search_results_mouseup(e)},e.prototype.outerHTML=function(e){var t;return e.outerHTML?e.outerHTML:((t=document.createElement("div")).appendChild(e),t.innerHTML)},e.prototype.get_single_html=function(){return'\n '+this.default_text+'\n
\n\n'},e.prototype.get_multi_html=function(){return'\n'},e.prototype.get_no_results_html=function(e){return'\n '+this.results_none_found+" "+this.escape_html(e)+"\n"},e.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},e.default_multiple_text="Select Some Options",e.default_single_text="Select an Option",e.default_no_result_text="No results match",e}(),this.Chosen=function(s){function r(){return r.__super__.constructor.apply(this,arguments)}var n;return i(r,e),r.prototype.setup=function(){return this.current_selectedIndex=this.form_field.selectedIndex},r.prototype.set_up_html=function(){var e,t;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),t={class:e.join(" "),title:this.form_field.title},this.form_field.id.length&&(t.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=new Element("div",t),this.container.setStyle({width:this.container_width()}),this.is_multiple?this.container.update(this.get_multi_html()):this.container.update(this.get_single_html()),this.form_field.hide().insert({after:this.container}),this.dropdown=this.container.down("div.chosen-drop"),this.search_field=this.container.down("input"),this.search_results=this.container.down("ul.chosen-results"),this.search_field_scale(),this.search_no_results=this.container.down("li.no-results"),this.is_multiple?(this.search_choices=this.container.down("ul.chosen-choices"),this.search_container=this.container.down("li.search-field")):(this.search_container=this.container.down("div.chosen-search"),this.selected_item=this.container.down(".chosen-single")),this.results_build(),this.set_tab_index(),this.set_label_behavior()},r.prototype.on_ready=function(){return this.form_field.fire("chosen:ready",{chosen:this})},r.prototype.register_observers=function(){return this.container.observe("touchstart",function(e){return function(t){return e.container_mousedown(t)}}(this)),this.container.observe("touchend",function(e){return function(t){return e.container_mouseup(t)}}(this)),this.container.observe("mousedown",function(e){return function(t){return e.container_mousedown(t)}}(this)),this.container.observe("mouseup",function(e){return function(t){return e.container_mouseup(t)}}(this)),this.container.observe("mouseenter",function(e){return function(t){return e.mouse_enter(t)}}(this)),this.container.observe("mouseleave",function(e){return function(t){return e.mouse_leave(t)}}(this)),this.search_results.observe("mouseup",function(e){return function(t){return e.search_results_mouseup(t)}}(this)),this.search_results.observe("mouseover",function(e){return function(t){return e.search_results_mouseover(t)}}(this)),this.search_results.observe("mouseout",function(e){return function(t){return e.search_results_mouseout(t)}}(this)),this.search_results.observe("mousewheel",function(e){return function(t){return e.search_results_mousewheel(t)}}(this)),this.search_results.observe("DOMMouseScroll",function(e){return function(t){return e.search_results_mousewheel(t)}}(this)),this.search_results.observe("touchstart",function(e){return function(t){return e.search_results_touchstart(t)}}(this)),this.search_results.observe("touchmove",function(e){return function(t){return e.search_results_touchmove(t)}}(this)),this.search_results.observe("touchend",function(e){return function(t){return e.search_results_touchend(t)}}(this)),this.form_field.observe("chosen:updated",function(e){return function(t){return e.results_update_field(t)}}(this)),this.form_field.observe("chosen:activate",function(e){return function(t){return e.activate_field(t)}}(this)),this.form_field.observe("chosen:open",function(e){return function(t){return e.container_mousedown(t)}}(this)),this.form_field.observe("chosen:close",function(e){return function(t){return e.close_field(t)}}(this)),this.search_field.observe("blur",function(e){return function(t){return e.input_blur(t)}}(this)),this.search_field.observe("keyup",function(e){return function(t){return e.keyup_checker(t)}}(this)),this.search_field.observe("keydown",function(e){return function(t){return e.keydown_checker(t)}}(this)),this.search_field.observe("focus",function(e){return function(t){return e.input_focus(t)}}(this)),this.search_field.observe("cut",function(e){return function(t){return e.clipboard_event_checker(t)}}(this)),this.search_field.observe("paste",function(e){return function(t){return e.clipboard_event_checker(t)}}(this)),this.is_multiple?this.search_choices.observe("click",function(e){return function(t){return e.choices_click(t)}}(this)):this.container.observe("click",function(e){return e.preventDefault()})},r.prototype.destroy=function(){var e,t,s,i;for(this.container.ownerDocument.stopObserving("click",this.click_test_action),t=0,s=(i=["chosen:updated","chosen:activate","chosen:open","chosen:close"]).length;t=r?this.search_results.scrollTop=t-i>0?t-i:0:s"+this.choice_label(e)+""),e.disabled?t.addClassName("search-choice-disabled"):((s=new Element("a",{href:"#",class:"search-choice-close",rel:e.array_index})).observe("click",function(e){return function(t){return e.choice_destroy_link_click(t)}}(this)),t.insert(s)),this.search_container.insert({before:t})},r.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(e.target)},r.prototype.choice_destroy=function(e){if(this.result_deselect(e.readAttribute("rel")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),e.up("li").remove(),this.search_field_scale()},r.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},r.prototype.results_reset_cleanup=function(){var e;if(this.current_selectedIndex=this.form_field.selectedIndex,e=this.selected_item.down("abbr"))return e.remove()},r.prototype.result_select=function(e){var t,s;if(this.result_highlight)return t=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field.fire("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?t.removeClassName("active-result"):this.reset_single_select_options(),t.addClassName("result-selected"),s=this.results_data[t.getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||e.metaKey||e.ctrlKey)?e.metaKey||e.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.value="",this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change(),this.current_selectedIndex=this.form_field.selectedIndex,e.preventDefault(),this.search_field_scale())},r.prototype.single_set_selected_text=function(e){return null==e&&(e=this.default_text),e===this.default_text?this.selected_item.addClassName("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClassName("chosen-default")),this.selected_item.down("span").update(e)},r.prototype.result_deselect=function(e){var t;return t=this.results_data[e],!this.form_field.options[t.options_index].disabled&&(t.selected=!1,this.form_field.options[t.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change(),this.search_field_scale(),!0)},r.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.down("abbr")||this.selected_item.down("span").insert({after:''}),this.selected_item.addClassName("chosen-single-with-deselect")},r.prototype.get_search_field_value=function(){return this.search_field.value},r.prototype.get_search_text=function(){return this.get_search_field_value().strip()},r.prototype.escape_html=function(e){return e.escapeHTML()},r.prototype.winnow_results_set_highlight=function(){var e;if(this.is_multiple||(e=this.search_results.down(".result-selected.active-result")),null==e&&(e=this.search_results.down(".active-result")),null!=e)return this.result_do_highlight(e)},r.prototype.no_results=function(e){return this.search_results.insert(this.get_no_results_html(e)),this.form_field.fire("chosen:no_results",{chosen:this})},r.prototype.no_results_clear=function(){var e,t;for(e=null,t=[];e=this.search_results.down(".no-results");)t.push(e.remove());return t},r.prototype.keydown_arrow=function(){var e;return this.results_showing&&this.result_highlight?(e=this.result_highlight.next(".active-result"))?this.result_do_highlight(e):void 0:this.results_show()},r.prototype.keyup_arrow=function(){var e,t,s;return this.results_showing||this.is_multiple?this.result_highlight?(s=this.result_highlight.previousSiblings(),e=this.search_results.select("li.active-result"),(t=s.intersect(e)).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},r.prototype.keydown_backstroke=function(){var e;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.down("a")),this.clear_backstroke()):(e=this.search_container.siblings().last())&&e.hasClassName("search-choice")&&!e.hasClassName("search-choice-disabled")?(this.pending_backstroke=e,this.pending_backstroke&&this.pending_backstroke.addClassName("search-choice-focus"),this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClassName("search-choice-focus")):void 0},r.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClassName("search-choice-focus"),this.pending_backstroke=null},r.prototype.search_field_scale=function(){var e,t,s,i,r,n,o,l;if(this.is_multiple){for(n={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(o=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s .select2-chosen {
+ margin-right: 26px !important;
+}
+
+
+/* =========================================================
+ FIX ESPECÍFICO: ddlEfector3 (ClientIDMode="Static")
+ Forzar ancho fijo para evitar cambios al escribir/seleccionar
+ ========================================================= */
+
+/* Ajusta este valor al ancho que quieras (200px según tu markup) */
+#s2id_ddlEfector3.select2-container,
+#ddlEfector3 + .select2-container {
+ width: 500px !important;
+ min-width: 500px !important;
+ max-width: 500px !important;
+}
+
+ /* Asegura que la caja visible y el texto interno respeten el ancho fijo */
+ #s2id_ddlEfector3 .select2-choice,
+ #ddlEfector3 + .select2-container .select2-choice {
+ width: 100% !important;
+ box-sizing: border-box;
+ }
+
+ /* Limita el ancho del texto seleccionado para que no empuje elementos */
+ #s2id_ddlEfector3 .select2-chosen,
+ #ddlEfector3 + .select2-container .select2-chosen {
+ max-width: calc(100% - 36px) !important; /* deja espacio para flecha/clear */
+ overflow: hidden !important;
+ text-overflow: ellipsis !important;
+ white-space: nowrap !important;
+ }
+
+/* Asegura ancho fijo del dropdown (por si se renderiza fuera del contenedor) */
+.select2-drop {
+ min-width: 500px !important;
+}
+
From 3d8a9d4930fd1c4b9b923c19b989f189ddd99424 Mon Sep 17 00:00:00 2001
From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com>
Date: Wed, 25 Mar 2026 15:29:31 -0300
Subject: [PATCH 3/6] =?UTF-8?q?fix:=20correcion=20en=20"No=20funciona=20va?=
=?UTF-8?q?lidacion=20de=20an=C3=A1lisis"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
WebLab/Protocolos/ProtocoloEdit2.aspx | 1 +
WebLab/Protocolos/ProtocoloEdit2.aspx.cs | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx b/WebLab/Protocolos/ProtocoloEdit2.aspx
index 76b9378..f35df59 100644
--- a/WebLab/Protocolos/ProtocoloEdit2.aspx
+++ b/WebLab/Protocolos/ProtocoloEdit2.aspx
@@ -1226,6 +1226,7 @@
OrdenarDatos();
contadorfilas = contadorfilas - 1;
+ document.getElementById('<%= Page.Master.FindControl("ContentPlaceHolder1").FindControl("TxtCantidadFilas").ClientID %>').value = contadorfilas; //para no perder el valor luego de un postback
}
else {
diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
index 975bc6c..9ef2ca0 100644
--- a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
+++ b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
@@ -3778,11 +3778,11 @@ protected void cvValidacionInput_ServerValidate(object source, ServerValidateEve
else
{
-
- ///
- if ((TxtDatos.Value == "") || (TxtDatos.Value == "1###on@"))
+ ///
+
+ if ((TxtDatos.Value == "") || (TxtDatos.Value == "1###on@") || (TxtDatos.Value == "1###on#0@") || TxtDatos.Value == "1###false#0@")
{
args.IsValid = false;
From 256e309285cae2f167363c3977817506ee1e1eed Mon Sep 17 00:00:00 2001
From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com>
Date: Thu, 26 Mar 2026 09:25:07 -0300
Subject: [PATCH 4/6] =?UTF-8?q?(Lab=20224)=20=20Correcci=C3=B3n=20de=20bug?=
=?UTF-8?q?=20sobre=20la=20edici=C3=B3n=20de=20determinaciones=20con=20la?=
=?UTF-8?q?=20marca=20=E2=80=9Csin=20muestra=E2=80=9D=20(#74)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian
* fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian
* fix: mismo fix en protocolo edit
* fix: agrego que sea titulo para entrar a la regeneracion de items
* fix: manera de listar los items en la grilla. verificar de no generar derivados.
* cambio valores de resultado por variable ConResultado
* ajuste actualizacion obra social del paciente
---------
Co-authored-by: Caro
---
ImprimeLocal/App.config | 8 +--
WebLab/Protocolos/ProtocoloEdit2.aspx.cs | 55 ++++++++++++++++++---
WebLab/Resultados/AnalisisEdit.aspx.cs | 63 +++++++++++++++++++++---
3 files changed, 109 insertions(+), 17 deletions(-)
diff --git a/ImprimeLocal/App.config b/ImprimeLocal/App.config
index b22e4ba..60ff3ed 100644
--- a/ImprimeLocal/App.config
+++ b/ImprimeLocal/App.config
@@ -21,12 +21,12 @@
-
-
+
+
-
+
-
+
diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
index af7d241..bdb5ef2 100644
--- a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
+++ b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
@@ -1111,12 +1111,16 @@ private void MostrarDeterminaciones(Protocolo oRegistro)
crit.AddOrder(Order.Asc("IdDetalleProtocolo"));
IList items = crit.List();
- string pivot = "";
+ string pivot = "";
string sDatos = "";
-
+ HashSet pivote = new HashSet();
+
foreach (DetalleProtocolo oDet in items)
{
- if (pivot != oDet.IdItem.Nombre)
+ //Debo cambiar la manera que verifica los repetidos, porque ahora cuando se regenera un subItem el IdDetalleProtocolo no es secuencial
+ //Y en la vista del protocolo se ve "duplicado"
+ //if (pivot != oDet.IdItem.Nombre)
+ if (pivote.Add(oDet.IdItem.Nombre)) // Si Add devuelve True es porque lo agrego porque no hay duplicados
{
/*if (sDatos == "")
sDatos = oDet.IdItem.Codigo + "#" + oDet.TrajoMuestra + "#" + oDet.ConResultado;
@@ -1749,9 +1753,11 @@ protected void btnGuardar_Click(object sender, EventArgs e)
/// actualiza al paciente con la ultima obra social guardada: solo en las altas
+ /* No es necesario siempre se guarda -1 con el sil2
oRegistro.IdPaciente.IdObraSocial = oRegistro.IdObraSocial.IdObraSocial;
oRegistro.IdPaciente.FechaUltimaActualizacion = DateTime.Now;
oRegistro.IdPaciente.Save();
+ */
if (ddlImpresoraEtiqueta.SelectedValue != "0")
// oRegistro.ImprimirCodigoBarras(ddlImpresoraEtiqueta.SelectedItem.Text, int.Parse(Session["idUsuario"].ToString()));
@@ -2673,6 +2679,8 @@ private void GuardarDetalle(Business.Data.Laboratorio.Protocolo oRegistro)
{ /// si cambió la marca de sin muetsra
foreach (DetalleProtocolo oDetalle in listadetalle)
{
+
+
if (trajomuestra == "true") /// es no trajo
{
if (oDetalle.TrajoMuestra == "Si") // estaba grabado Si
@@ -2689,6 +2697,39 @@ private void GuardarDetalle(Business.Data.Laboratorio.Protocolo oRegistro)
oDetalle.TrajoMuestra = "Si";
oDetalle.GrabarAuditoriaDetalleProtocolo("Con Muestra", oUser.IdUsuario);
oDetalle.Save();
+
+ /* Bug sobre la edición de determinaciones con la marca “sin muestra”:
+ * Si se genero el protocolo con un analisis "S/muestra" de una practica no se generan los idItem del diagrama
+ * (porque GuardarDetallePractica solo actualizaba TrajoMuestra del codigo de la practica)
+ * Correcion: si en protocolo se cambia a "Con muestra",se regeneran los detalles faltantes de la practica
+ */
+
+ if (oDetalle.IdItem == oDetalle.IdSubItem)
+ {
+ /* Si ValidadoTotal (en ProtocoloEdit2) cargó idUsuarioValida por un caso de
+ * "sin muestra" se debe resetear idUsuarioValida para evitar inconsistencias
+ */
+
+ //Caso 1: el análisis aún no tiene resultados (simple o compuesto),
+ if (!oDetalle.ConResultado)
+ {
+ oDetalle.IdUsuarioValida = 0;
+ oDetalle.FechaValida = DateTime.Parse("01/01/1900");
+ }
+
+ //Caso 2: Es derivacion.
+ //Los analisis Derivados no tienen IdUsuarioValida, solo idUsuarioResultado
+
+ if (oDetalle.ResultadoCar == "Pendiente de derivar")
+ {
+ oDetalle.IdUsuarioValida = 0;
+ oDetalle.FechaValida = DateTime.Parse("01/01/1900");
+ }
+ if (oItem.IdCategoria == 1 )
+ {
+ GuardarDetallePractica(oDetalle, true); //regenera=true --> se omite si es Derivacion para no generar una nueva Derivacion
+ }
+ }
}
}
@@ -2869,11 +2910,11 @@ private void GuardarDetalle(Business.Data.Laboratorio.Protocolo oRegistro)
- private void GuardarDetallePractica(DetalleProtocolo oDet)
+ private void GuardarDetallePractica(DetalleProtocolo oDet, bool regenera=false)
{
-
-
- if (oDet.VerificarSiEsDerivable(oUser.IdEfector)) //oDet.IdItem.IdEfector.IdEfector != oDet.IdItem.IdEfectorDerivacion.IdEfector) //Si es un item derivable no busca hijos y guarda directamente.
+ //Alta normal (regenera = false) --> el código funciona como antes
+ // Modificación con regeneración(regenera = true) --> se omite si es Derivacion para no generar una nueva Derivacion
+ if (!regenera && oDet.VerificarSiEsDerivable(oUser.IdEfector)) //oDet.IdItem.IdEfector.IdEfector != oDet.IdItem.IdEfectorDerivacion.IdEfector) //Si es un item derivable no busca hijos y guarda directamente.
{
oDet.IdSubItem = oDet.IdItem;
oDet.Save();
diff --git a/WebLab/Resultados/AnalisisEdit.aspx.cs b/WebLab/Resultados/AnalisisEdit.aspx.cs
index 9c13abc..a122d53 100644
--- a/WebLab/Resultados/AnalisisEdit.aspx.cs
+++ b/WebLab/Resultados/AnalisisEdit.aspx.cs
@@ -109,9 +109,14 @@ private void MuestraDatos()
IList items = crit.List();
string pivot = "";
string sDatos = "";
+ HashSet pivote = new HashSet();
+
foreach (DetalleProtocolo oDet in items)
{
- if (pivot != oDet.IdItem.Nombre)
+ //if (pivot != oDet.IdItem.Nombre) //Debo cambiar la manera que verifica los repetidos,
+ // porque ahora cuando se regenera un subItem el IdDetalleProtocolo no es secuencial
+ // Y en la vista del protocolo se ve "duplicado"
+ if (pivote.Add(oDet.IdItem.Nombre)) // Si Add devuelve True es porque lo agrego sin problemas de duplicados
{
if (sDatos == "")
sDatos = oDet.IdItem.Codigo + "#" + oDet.TrajoMuestra + "#" + oDet.ConResultado;
@@ -389,18 +394,62 @@ private void GuardarDetalle(Business.Data.Laboratorio.Protocolo oRegistro)
// GuardarDerivacion(oDetalle);
//oDetalle.GuardarDerivacion(oUser);
}
- else //si ya esta actualizo si trajo muestra o no
+ else //si ya esta actualizo si trajo muestra o no //3/3/2026 Y regenero los analisis de las practicas si no estaban en el alta
{
+
foreach (DetalleProtocolo oDetalle in listadetalle)
{
if (trajomuestra == "true")
oDetalle.TrajoMuestra = "No";
- else
+
+ else // (trajomuestra == "false"
+ {
+ /* Bug sobre la edición de determinaciones con la marca “sin muestra”:
+ * Si se genero el protocolo con un analisis "S/muestra" de una practica no se generan los idItem del diagrama
+ * (porque GuardarDetallePractica solo actualizaba TrajoMuestra del codigo de la practica)
+ * Correcion: si en Validacion se cambia a "Con muestra",se regeneran los detalles faltantes de la practica
+ */
+
+
+ bool antesSinMuestra = (oDetalle.TrajoMuestra == "No");
oDetalle.TrajoMuestra = "Si";
+
+ if (antesSinMuestra && oDetalle.IdItem == oDetalle.IdSubItem &&
+ (oRegistro.IdTipoServicio.IdTipoServicio == 1 || oRegistro.IdTipoServicio.IdTipoServicio ==3)) //Solo pasa en Labo y Microbiologia, en NO Pacientes se generan todos los items sin muesta
+ {
+ /* Si ValidadoTotal (en ProtocoloEdit2) cargó idUsuarioValida por un caso de
+ * "sin muestra" se debe resetear idUsuarioValida para evitar inconsistencias
+ */
+
+ //Caso 1: el análisis aún no tiene resultados (simple o compuesto),
+ if (!oDetalle.ConResultado)
+ {
+ oDetalle.IdUsuarioValida = 0;
+ oDetalle.FechaValida = DateTime.Parse("01/01/1900");
+ }
+
+ //Caso 2: Es derivacion.
+ //Los analisis Derivados no tienen IdUsuarioValida, solo idUsuarioResultado
+ if (oDetalle.ResultadoCar == "Pendiente de derivar")
+ {
+ oDetalle.IdUsuarioValida = 0;
+ oDetalle.FechaValida = DateTime.Parse("01/01/1900");
+ }
+
+ /* Si es un analisis Compuesto Regenero analisis.
+ * Considero que si el analisis es Derivacion no se debe regenerar
+ * Considero idItem = idSubItem
+ */
+
+ if ( oItem.IdCategoria == 1 )
+ GuardarDetallePractica(oDetalle, true); //true --> se omite si es Derivacion para no generar una nueva Derivacion
+ }
+
+ }
oDetalle.Save();
+
}
-
}
}
}
@@ -541,10 +590,12 @@ private void GuardarDetalle2(Business.Data.Laboratorio.Protocolo oRegistro)
- private void GuardarDetallePractica(DetalleProtocolo oDet)
+ private void GuardarDetallePractica(DetalleProtocolo oDet, bool regenera = false)
{
+ //Alta normal (regenera = false) → el código funciona como antes
+ // Modificación con regeneración(regenera = true) → se omite si es Derivacion para no generar una nueva Derivacion
- if (oDet.VerificarSiEsDerivable(oDet.IdProtocolo.IdEfector)) //oDet.IdItem.IdEfector.IdEfector != oDet.IdItem.IdEfectorDerivacion.IdEfector) //Si es un item derivable no busca hijos y guarda directamente.
+ if (!regenera && oDet.VerificarSiEsDerivable(oDet.IdProtocolo.IdEfector)) //oDet.IdItem.IdEfector.IdEfector != oDet.IdItem.IdEfectorDerivacion.IdEfector) //Si es un item derivable no busca hijos y guarda directamente.
{
oDet.IdSubItem = oDet.IdItem;
oDet.Save();
From 7013d25ed8fc3b8d7dfe55b64619b0eb128693c5 Mon Sep 17 00:00:00 2001
From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com>
Date: Fri, 20 Mar 2026 15:25:18 -0300
Subject: [PATCH 5/6] fix: se corrige el bug de "recordar analisis"
---
WebLab/Protocolos/ProtocoloEdit2.aspx.cs | 53 ++++++++++++++++++++----
1 file changed, 46 insertions(+), 7 deletions(-)
diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
index bdb5ef2..e296b03 100644
--- a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
+++ b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
@@ -1664,14 +1664,14 @@ private void IniciarValores(Configuracion oC)
chkRecordarPractica.Checked = true;
}
break;
- case "prácticas":
- TxtDatosCargados.Value = s_control[1].ToString(); break;
+ case "prácticas": if(Request["idServicio"] == "1") TxtDatosCargados.Value = s_control[1].ToString(); break;
+ case "prácticasMicro": if(Request["idServicio"] == "3") TxtDatosCargados.Value = s_control[1].ToString(); break;
//case "ddlImpresora":
// ddlImpresora.SelectedValue = s_control[1].ToString(); break;
case "ddlImpresoraEtiqueta":
- ddlImpresoraEtiqueta.SelectedValue = s_control[1].ToString(); break;
- }
+ ddlImpresoraEtiqueta.SelectedValue = s_control[1].ToString(); break;
+ }
}
}
else
@@ -2495,10 +2495,39 @@ private void AlmacenarSesion(Configuracion oC)
if (Request["Operacion"].ToString() != "AltaTurno")
{
s_valores += "@ddlSectorServicio:" + ddlSectorServicio.SelectedValue;
- }
+ }
+
+ if (chkRecordarPractica.Checked)
+ {//guardo la sesion de general y microbiologia por si vuelvo a cargar esos tipos de labos, luego en GuardarDetalle se actualizan si el usuario lo cambio
+ if(Session["ProtocoloLaboratorio"] != null)
+ {
+ string[] arr = Session["ProtocoloLaboratorio"].ToString().Split(("@").ToCharArray());
+ foreach (string item in arr)
+ {
+ string[] s_control = item.Split((":").ToCharArray());
+ switch (s_control[0].ToString()) {
+
+ case "prácticas":
+ string practicas = "@prácticas:" + s_control[1].ToString();
+ if (Request["idServicio"] == "1")
+ s_valores = s_valores.Replace(practicas, ""); //si es laboratorio general lo borro y lo cargo en GuardarDetalle.
+ else
+ s_valores += practicas; //si no es laboratorio general no quiero perder su session "prácticas"
+ break;
+ case "prácticasMicro":
+ string practicasMicro = "@prácticasMicro:" + s_control[1].ToString();
+ if (Request["idServicio"] != "3") //si no es microbiologia no quiero perder su session "prácticasMicro"
+ s_valores += "@prácticasMicro:" + s_control[1].ToString();
+ else
+ s_valores = s_valores.Replace(practicasMicro, ""); //si es micro lo borro y lo cargo en GuardarDetalle.
+ break;
+ }
+ }
+ }
+ }
- Session["ProtocoloLaboratorio"] = s_valores;
+ Session["ProtocoloLaboratorio"] = s_valores;
}
@@ -2743,7 +2772,17 @@ private void GuardarDetalle(Business.Data.Laboratorio.Protocolo oRegistro)
if (Request["Operacion"].ToString() != "Modifica")
{
if (chkRecordarPractica.Checked)
- Session["ProtocoloLaboratorio"] += "@prácticas:" + recordar_practicas;
+ {
+ //actualizo los analisis a recordar por IdTipoServicio
+ switch (oRegistro.IdTipoServicio.IdTipoServicio)
+ {
+ case 1: Session["ProtocoloLaboratorio"] += "@prácticas:" + recordar_practicas; /*labo general*/ break;
+ case 3: Session["ProtocoloLaboratorio"] += "@prácticasMicro:" + recordar_practicas; /*microbiologia*/ break;
+ }
+
+
+
+ }
}
From b3816cb394c730c70a6ede179288819df7dc9a75 Mon Sep 17 00:00:00 2001
From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com>
Date: Wed, 25 Mar 2026 15:29:31 -0300
Subject: [PATCH 6/6] =?UTF-8?q?fix:=20correcion=20en=20"No=20funciona=20va?=
=?UTF-8?q?lidacion=20de=20an=C3=A1lisis"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
WebLab/Protocolos/ProtocoloEdit2.aspx | 1 +
WebLab/Protocolos/ProtocoloEdit2.aspx.cs | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx b/WebLab/Protocolos/ProtocoloEdit2.aspx
index 76b9378..f35df59 100644
--- a/WebLab/Protocolos/ProtocoloEdit2.aspx
+++ b/WebLab/Protocolos/ProtocoloEdit2.aspx
@@ -1226,6 +1226,7 @@
OrdenarDatos();
contadorfilas = contadorfilas - 1;
+ document.getElementById('<%= Page.Master.FindControl("ContentPlaceHolder1").FindControl("TxtCantidadFilas").ClientID %>').value = contadorfilas; //para no perder el valor luego de un postback
}
else {
diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
index e296b03..72e29ee 100644
--- a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
+++ b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs
@@ -3819,11 +3819,11 @@ protected void cvValidacionInput_ServerValidate(object source, ServerValidateEve
else
{
-
- ///
- if ((TxtDatos.Value == "") || (TxtDatos.Value == "1###on@"))
+ ///
+
+ if ((TxtDatos.Value == "") || (TxtDatos.Value == "1###on@") || (TxtDatos.Value == "1###on#0@") || TxtDatos.Value == "1###false#0@")
{
args.IsValid = false;