diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala index c397cff..de2ad4d 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala @@ -48,6 +48,7 @@ status = "Nesplněno", statusColor = Color.red, splneno = false, + dukaz = None, container = container(crit) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala index c397cff..de2ad4d 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala @@ -48,6 +48,7 @@ status = "Nesplněno", statusColor = Color.red, splneno = false, + dukaz = None, container = container(crit) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala index 2735440..48d338b 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala @@ -19,6 +19,6 @@ cls := "flex flex-col space-y-4", DetailOsoby.render($m.map(_.osoba)), DetailParametru.render($m.map(_.parametr)), - DetailKriteria.render($m.map(_.kriterium)) + DetailKriteria($m.map(_.kriterium)) ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala index c397cff..de2ad4d 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala @@ -48,6 +48,7 @@ status = "Nesplněno", statusColor = Color.red, splneno = false, + dukaz = None, container = container(crit) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala index 2735440..48d338b 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala @@ -19,6 +19,6 @@ cls := "flex flex-col space-y-4", DetailOsoby.render($m.map(_.osoba)), DetailParametru.render($m.map(_.parametr)), - DetailKriteria.render($m.map(_.kriterium)) + DetailKriteria($m.map(_.kriterium)) ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala index 362ad5f..20ada23 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala @@ -2,161 +2,166 @@ import com.raquo.laminar.api.L.{*, given} import cz.e_bs.cmi.mdr.pdb.app.components.CustomAttrs +import cz.e_bs.cmi.mdr.pdb.app.components.Icons object DetailKriteria: type ViewModel = SeznamKriterii.Kriterium - def render($m: Signal[ViewModel]): HtmlElement = + def apply($m: Signal[ViewModel]): HtmlElement = div( h3( cls := "text-l font-bold text-gray-900", child.text <-- $m.map(_.nazev) ), - div( - cls := "bg-white shadow overflow-hidden sm:rounded-lg", - div( - cls := "px-4 py-5 sm:px-6", - h3( - cls := "text-lg leading-6 font-medium text-gray-900", - """Applicant Information""" - ), - p( - cls := "mt-1 max-w-2xl text-sm text-gray-500", - """Personal details and application.""" - ) - ), - div( - cls := "border-t border-gray-200 px-4 py-5 sm:px-6", - dl( - cls := "grid grid-cols-1 gap-x-4 gap-y-8 sm:grid-cols-2", + child <-- $m.map(_.dukaz) + .split(_ => ())((_, _, $d) => + div( + cls := "bg-white shadow overflow-hidden sm:rounded-lg", div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Full name""" + cls := "px-4 py-5 sm:px-6", + h3( + cls := "text-lg leading-6 font-medium text-gray-900", + """Applicant Information""" ), - dd( - cls := "mt-1 text-sm text-gray-900", - """Margot Foster""" + p( + cls := "mt-1 max-w-2xl text-sm text-gray-500", + """Personal details and application.""" ) ), div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Application for""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """Backend Developer""" - ) - ), - div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Email address""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """margotfoster@example.com""" - ) - ), - div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Salary expectation""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """$120,000""" - ) - ), - div( - cls := "sm:col-span-2", - dt( - cls := "text-sm font-medium text-gray-500", - """About""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """Fugiat ipsum ipsum deserunt culpa aute sint do nostrud anim incididunt cillum culpa consequat. Excepteur qui ipsum aliquip consequat sint. Sit id mollit nulla mollit nostrud in ea officia proident. Irure nostrud pariatur mollit ad adipisicing reprehenderit deserunt qui eu.""" - ) - ), - div( - cls := "sm:col-span-2", - dt( - cls := "text-sm font-medium text-gray-500", - """Attachments""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - ul( - role := "list", - cls := "border border-gray-200 rounded-md divide-y divide-gray-200", - li( - cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", - div( - cls := "w-0 flex-1 flex items-center", { - import svg.* - import CustomAttrs.svg.ariaHidden - svg( - cls := "flex-shrink-0 h-5 w-5 text-gray-400", - xmlns := "http://www.w3.org/2000/svg", - viewBox := "0 0 20 20", - fill := "currentColor", - ariaHidden := true, - path( - fillRule := "evenodd", - d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", - clipRule := "evenodd" - ) - ) - }, - span( - cls := "ml-2 flex-1 w-0 truncate", - """resume_back_end_developer.pdf""" - ) - ), - div( - cls := "ml-4 flex-shrink-0", - a( - href := "#", - cls := "font-medium text-indigo-600 hover:text-indigo-500", - """Download""" - ) - ) + cls := "border-t border-gray-200 px-4 py-5 sm:px-6", + dl( + cls := "grid grid-cols-1 gap-x-4 gap-y-8 sm:grid-cols-2", + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Full name""" ), - li( - cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", - div( - cls := "w-0 flex-1 flex items-center", { - import svg.* - import CustomAttrs.svg.ariaHidden - svg( - cls := "flex-shrink-0 h-5 w-5 text-gray-400", - xmlns := "http://www.w3.org/2000/svg", - viewBox := "0 0 20 20", - fill := "currentColor", - ariaHidden := true, - path( - fillRule := "evenodd", - d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", - clipRule := "evenodd" + dd( + cls := "mt-1 text-sm text-gray-900", + """Margot Foster""" + ) + ), + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Application for""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """Backend Developer""" + ) + ), + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Email address""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """margotfoster@example.com""" + ) + ), + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Salary expectation""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """$120,000""" + ) + ), + div( + cls := "sm:col-span-2", + dt( + cls := "text-sm font-medium text-gray-500", + """About""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """Fugiat ipsum ipsum deserunt culpa aute sint do nostrud anim incididunt cillum culpa consequat. Excepteur qui ipsum aliquip consequat sint. Sit id mollit nulla mollit nostrud in ea officia proident. Irure nostrud pariatur mollit ad adipisicing reprehenderit deserunt qui eu.""" + ) + ), + div( + cls := "sm:col-span-2", + dt( + cls := "text-sm font-medium text-gray-500", + """Attachments""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + ul( + role := "list", + cls := "border border-gray-200 rounded-md divide-y divide-gray-200", + li( + cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", + div( + cls := "w-0 flex-1 flex items-center", { + import svg.* + import CustomAttrs.svg.ariaHidden + svg( + cls := "flex-shrink-0 h-5 w-5 text-gray-400", + xmlns := "http://www.w3.org/2000/svg", + viewBox := "0 0 20 20", + fill := "currentColor", + ariaHidden := true, + path( + fillRule := "evenodd", + d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", + clipRule := "evenodd" + ) + ) + }, + span( + cls := "ml-2 flex-1 w-0 truncate", + """resume_back_end_developer.pdf""" + ) + ), + div( + cls := "ml-4 flex-shrink-0", + a( + href := "#", + cls := "font-medium text-indigo-600 hover:text-indigo-500", + """Download""" ) ) - }, - span( - cls := "ml-2 flex-1 w-0 truncate", - """coverletter_back_end_developer.pdf""" - ) - ), - div( - cls := "ml-4 flex-shrink-0", - a( - href := "#", - cls := "font-medium text-indigo-600 hover:text-indigo-500", - """Download""" + ), + li( + cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", + div( + cls := "w-0 flex-1 flex items-center", { + import svg.* + import CustomAttrs.svg.ariaHidden + svg( + cls := "flex-shrink-0 h-5 w-5 text-gray-400", + xmlns := "http://www.w3.org/2000/svg", + viewBox := "0 0 20 20", + fill := "currentColor", + ariaHidden := true, + path( + fillRule := "evenodd", + d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", + clipRule := "evenodd" + ) + ) + }, + span( + cls := "ml-2 flex-1 w-0 truncate", + """coverletter_back_end_developer.pdf""" + ) + ), + div( + cls := "ml-4 flex-shrink-0", + a( + href := "#", + cls := "font-medium text-indigo-600 hover:text-indigo-500", + """Download""" + ) + ) ) ) ) @@ -165,5 +170,18 @@ ) ) ) + .map(_.getOrElse(prazdnyDukaz)) + ) + + private def prazdnyDukaz: HtmlElement = + button( + tpe := "button", + cls := "relative block w-full border-2 border-gray-300 border-dashed rounded-lg p-12 text-center hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", + Icons.outline + .`document-add`(12) + .amend(svg.cls := "mx-auto text-gray-400"), + span( + cls := "mt-2 block text-sm font-medium text-gray-900", + "Přidat důkaz" ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala index c397cff..de2ad4d 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/connectors/conversions.scala @@ -48,6 +48,7 @@ status = "Nesplněno", statusColor = Color.red, splneno = false, + dukaz = None, container = container(crit) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala index 2735440..48d338b 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/DetailKriteriaPage.scala @@ -19,6 +19,6 @@ cls := "flex flex-col space-y-4", DetailOsoby.render($m.map(_.osoba)), DetailParametru.render($m.map(_.parametr)), - DetailKriteria.render($m.map(_.kriterium)) + DetailKriteria($m.map(_.kriterium)) ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala index 362ad5f..20ada23 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/DetailKriteria.scala @@ -2,161 +2,166 @@ import com.raquo.laminar.api.L.{*, given} import cz.e_bs.cmi.mdr.pdb.app.components.CustomAttrs +import cz.e_bs.cmi.mdr.pdb.app.components.Icons object DetailKriteria: type ViewModel = SeznamKriterii.Kriterium - def render($m: Signal[ViewModel]): HtmlElement = + def apply($m: Signal[ViewModel]): HtmlElement = div( h3( cls := "text-l font-bold text-gray-900", child.text <-- $m.map(_.nazev) ), - div( - cls := "bg-white shadow overflow-hidden sm:rounded-lg", - div( - cls := "px-4 py-5 sm:px-6", - h3( - cls := "text-lg leading-6 font-medium text-gray-900", - """Applicant Information""" - ), - p( - cls := "mt-1 max-w-2xl text-sm text-gray-500", - """Personal details and application.""" - ) - ), - div( - cls := "border-t border-gray-200 px-4 py-5 sm:px-6", - dl( - cls := "grid grid-cols-1 gap-x-4 gap-y-8 sm:grid-cols-2", + child <-- $m.map(_.dukaz) + .split(_ => ())((_, _, $d) => + div( + cls := "bg-white shadow overflow-hidden sm:rounded-lg", div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Full name""" + cls := "px-4 py-5 sm:px-6", + h3( + cls := "text-lg leading-6 font-medium text-gray-900", + """Applicant Information""" ), - dd( - cls := "mt-1 text-sm text-gray-900", - """Margot Foster""" + p( + cls := "mt-1 max-w-2xl text-sm text-gray-500", + """Personal details and application.""" ) ), div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Application for""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """Backend Developer""" - ) - ), - div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Email address""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """margotfoster@example.com""" - ) - ), - div( - cls := "sm:col-span-1", - dt( - cls := "text-sm font-medium text-gray-500", - """Salary expectation""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """$120,000""" - ) - ), - div( - cls := "sm:col-span-2", - dt( - cls := "text-sm font-medium text-gray-500", - """About""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - """Fugiat ipsum ipsum deserunt culpa aute sint do nostrud anim incididunt cillum culpa consequat. Excepteur qui ipsum aliquip consequat sint. Sit id mollit nulla mollit nostrud in ea officia proident. Irure nostrud pariatur mollit ad adipisicing reprehenderit deserunt qui eu.""" - ) - ), - div( - cls := "sm:col-span-2", - dt( - cls := "text-sm font-medium text-gray-500", - """Attachments""" - ), - dd( - cls := "mt-1 text-sm text-gray-900", - ul( - role := "list", - cls := "border border-gray-200 rounded-md divide-y divide-gray-200", - li( - cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", - div( - cls := "w-0 flex-1 flex items-center", { - import svg.* - import CustomAttrs.svg.ariaHidden - svg( - cls := "flex-shrink-0 h-5 w-5 text-gray-400", - xmlns := "http://www.w3.org/2000/svg", - viewBox := "0 0 20 20", - fill := "currentColor", - ariaHidden := true, - path( - fillRule := "evenodd", - d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", - clipRule := "evenodd" - ) - ) - }, - span( - cls := "ml-2 flex-1 w-0 truncate", - """resume_back_end_developer.pdf""" - ) - ), - div( - cls := "ml-4 flex-shrink-0", - a( - href := "#", - cls := "font-medium text-indigo-600 hover:text-indigo-500", - """Download""" - ) - ) + cls := "border-t border-gray-200 px-4 py-5 sm:px-6", + dl( + cls := "grid grid-cols-1 gap-x-4 gap-y-8 sm:grid-cols-2", + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Full name""" ), - li( - cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", - div( - cls := "w-0 flex-1 flex items-center", { - import svg.* - import CustomAttrs.svg.ariaHidden - svg( - cls := "flex-shrink-0 h-5 w-5 text-gray-400", - xmlns := "http://www.w3.org/2000/svg", - viewBox := "0 0 20 20", - fill := "currentColor", - ariaHidden := true, - path( - fillRule := "evenodd", - d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", - clipRule := "evenodd" + dd( + cls := "mt-1 text-sm text-gray-900", + """Margot Foster""" + ) + ), + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Application for""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """Backend Developer""" + ) + ), + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Email address""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """margotfoster@example.com""" + ) + ), + div( + cls := "sm:col-span-1", + dt( + cls := "text-sm font-medium text-gray-500", + """Salary expectation""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """$120,000""" + ) + ), + div( + cls := "sm:col-span-2", + dt( + cls := "text-sm font-medium text-gray-500", + """About""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + """Fugiat ipsum ipsum deserunt culpa aute sint do nostrud anim incididunt cillum culpa consequat. Excepteur qui ipsum aliquip consequat sint. Sit id mollit nulla mollit nostrud in ea officia proident. Irure nostrud pariatur mollit ad adipisicing reprehenderit deserunt qui eu.""" + ) + ), + div( + cls := "sm:col-span-2", + dt( + cls := "text-sm font-medium text-gray-500", + """Attachments""" + ), + dd( + cls := "mt-1 text-sm text-gray-900", + ul( + role := "list", + cls := "border border-gray-200 rounded-md divide-y divide-gray-200", + li( + cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", + div( + cls := "w-0 flex-1 flex items-center", { + import svg.* + import CustomAttrs.svg.ariaHidden + svg( + cls := "flex-shrink-0 h-5 w-5 text-gray-400", + xmlns := "http://www.w3.org/2000/svg", + viewBox := "0 0 20 20", + fill := "currentColor", + ariaHidden := true, + path( + fillRule := "evenodd", + d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", + clipRule := "evenodd" + ) + ) + }, + span( + cls := "ml-2 flex-1 w-0 truncate", + """resume_back_end_developer.pdf""" + ) + ), + div( + cls := "ml-4 flex-shrink-0", + a( + href := "#", + cls := "font-medium text-indigo-600 hover:text-indigo-500", + """Download""" ) ) - }, - span( - cls := "ml-2 flex-1 w-0 truncate", - """coverletter_back_end_developer.pdf""" - ) - ), - div( - cls := "ml-4 flex-shrink-0", - a( - href := "#", - cls := "font-medium text-indigo-600 hover:text-indigo-500", - """Download""" + ), + li( + cls := "pl-3 pr-4 py-3 flex items-center justify-between text-sm", + div( + cls := "w-0 flex-1 flex items-center", { + import svg.* + import CustomAttrs.svg.ariaHidden + svg( + cls := "flex-shrink-0 h-5 w-5 text-gray-400", + xmlns := "http://www.w3.org/2000/svg", + viewBox := "0 0 20 20", + fill := "currentColor", + ariaHidden := true, + path( + fillRule := "evenodd", + d := "M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z", + clipRule := "evenodd" + ) + ) + }, + span( + cls := "ml-2 flex-1 w-0 truncate", + """coverletter_back_end_developer.pdf""" + ) + ), + div( + cls := "ml-4 flex-shrink-0", + a( + href := "#", + cls := "font-medium text-indigo-600 hover:text-indigo-500", + """Download""" + ) + ) ) ) ) @@ -165,5 +170,18 @@ ) ) ) + .map(_.getOrElse(prazdnyDukaz)) + ) + + private def prazdnyDukaz: HtmlElement = + button( + tpe := "button", + cls := "relative block w-full border-2 border-gray-300 border-dashed rounded-lg p-12 text-center hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", + Icons.outline + .`document-add`(12) + .amend(svg.cls := "mx-auto text-gray-400"), + span( + cls := "mt-2 block text-sm font-medium text-gray-900", + "Přidat důkaz" ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/SeznamKriterii.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/SeznamKriterii.scala index e7bce53..4a08fb2 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/SeznamKriterii.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/SeznamKriterii.scala @@ -6,8 +6,17 @@ import cz.e_bs.cmi.mdr.pdb.app.components.list.ListRow import cz.e_bs.cmi.mdr.pdb.app.components.list.RowTag import cz.e_bs.cmi.mdr.pdb.app.components.list.RowNext +import java.time.LocalDate object SeznamKriterii: + case class Dokument(nazev: String, url: String) + case class Osoba(osobniCislo: String, jmeno: String) + case class Dukaz( + dokumenty: List[Dokument], + autorizoval: Option[Osoba], + autorizovano: Option[LocalDate], + poznámka: Option[String] + ) case class Kriterium( nazev: String, kapitola: String, @@ -15,6 +24,7 @@ status: String, statusColor: Color, splneno: Boolean, + dukaz: Option[Dukaz], container: HtmlElement = div() ) { val id = s"${kapitola}${bod}"