<.icon name="hero-chat-bubble-oval-left" class="w-6 h-6 text-ltrn-teacher-accent" />
@@ -77,7 +82,11 @@ defmodule LantternWeb.Assessments.StrandGoalDetailsOverlayComponent do
<%= @rubric.criteria %>
- <.report_scale scale={@strand_goal.scale} rubric={@rubric} entry={@entry} />
+ <.report_scale
+ scale={@strand_goal.scale}
+ rubric={@rubric}
+ entry={!@prevent_preview && @entry}
+ />
<%= gettext("Formative assessment") %>
@@ -119,6 +128,7 @@ defmodule LantternWeb.Assessments.StrandGoalDetailsOverlayComponent do
def mount(socket) do
socket =
socket
+ |> assign(:prevent_preview, false)
|> stream_configure(
:moments_assessment_points_and_entries,
dom_id: fn
diff --git a/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex b/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex
index 0da87bca..bf3c9ebd 100644
--- a/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex
+++ b/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex
@@ -8,8 +8,10 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
-`student_report_card` - `%StudentReportCard{}`
-`params` - the URL params from parent view `handle_params/3`
-`base_path` - the base URL path for overlay navigation control
+ -`current_profile` - the current `%Profile{}` from `current_user`
"""
+ alias Lanttern.Assessments.AssessmentPoint
use LantternWeb, :live_component
alias Lanttern.Assessments
@@ -26,7 +28,8 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
~H"""
<.responsive_container>
-
+
<%= gettext("Goals assessment entries") %>
+
<%= gettext(
"Here you'll find information about the strand final and formative assessments."
) %>
@@ -34,72 +37,39 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
<%= gettext("You can click the assessment card to view more details about it.") %>
- <.link
+ <.goal_card
:for={{goal, entry, moment_entries} <- @strand_goals_student_entries}
patch={"#{@base_path}&strand_goal_id=#{goal.id}"}
- class={[
- "group/card block mt-4",
- "sm:grid sm:grid-cols-[minmax(10px,_3fr)_minmax(10px,_2fr)]"
- ]}
- >
- <%!-- <.card_base class="flex flex-col sm:flex-row items-center gap-4 p-4"> --%>
- <.card_base class={[
- "p-4 group-hover/card:bg-ltrn-mesh-cyan",
- "sm:col-span-2 sm:grid sm:grid-cols-subgrid sm:items-center sm:gap-4"
- ]}>
-
-
-
- <%= goal.curriculum_item.curriculum_component.name %>
-
- <%= goal.curriculum_item.name %>
-
-
-
- <.assessment_metadata_icon
- :if={goal.is_differentiation || goal.has_diff_rubric_for_student}
- type={:diff}
- />
- <.assessment_metadata_icon :if={entry && entry.report_note} type={:teacher_comment} />
- <.assessment_metadata_icon
- :if={entry && entry.student_report_note}
- type={:student_comment}
- />
- <.assessment_metadata_icon :if={goal.report_info} type={:info} />
- <.assessment_metadata_icon :if={goal.rubric_id} type={:rubric} />
-
-
- <.moment_entry :for={moment_entry <- moment_entries} entry={moment_entry} />
- <.tooltip><%= gettext("Formative assessment pattern") %>
-
-
-
- <.assessment_point_entry_display
+ goal={goal}
+ entry={entry}
+ moment_entries={moment_entries}
+ prevent_preview={@prevent_final_assessment_preview}
+ />
+ <.empty_state :if={!@has_strand_goals_with_student_entries}>
+ <%= gettext("No assessment entries for this strand yet") %>
+
+
+
+
+ <%= gettext("Goals without assessment entries") %>
+
+ <.toggle_expand_button
+ id="toggle-strand-goals-without-student-entries"
+ target_selector="#strand-goals-without-student-entries"
+ initial_is_expanded={false}
+ />
+
+
+ <.goal_card
+ :for={{goal, entry, moment_entries} <- @strand_goals_without_student_entries}
+ patch={"#{@base_path}&strand_goal_id=#{goal.id}"}
+ goal={goal}
entry={entry}
- show_student_assessment
- class="mt-4 sm:mt-0"
+ moment_entries={moment_entries}
+ prevent_preview={@prevent_final_assessment_preview}
/>
-
-
+
+
<.live_component
:if={@strand_goal_id}
@@ -107,12 +77,95 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
id="assessment-point-details-component"
strand_goal_id={@strand_goal_id}
student_id={@student_report_card.student_id}
+ prevent_preview={@prevent_final_assessment_preview}
on_cancel={JS.patch(@base_path)}
/>
"""
end
+ attr :goal, AssessmentPoint, required: true
+ attr :entry, :any, required: true
+ attr :moment_entries, :list, required: true
+ attr :patch, :string, required: true
+ attr :prevent_preview, :boolean, required: true
+
+ defp goal_card(assigns) do
+ %{
+ goal: goal,
+ entry: entry,
+ moment_entries: moment_entries
+ } = assigns
+
+ render_icons_area =
+ goal.is_differentiation ||
+ (entry && entry.report_note) ||
+ (entry && entry.student_report_note) ||
+ goal.report_info ||
+ goal.rubric_id
+
+ render_extra_fields_area =
+ render_icons_area ||
+ moment_entries != []
+
+ assigns =
+ assigns
+ |> assign(:render_extra_fields_area, render_extra_fields_area)
+ |> assign(:render_icons_area, render_extra_fields_area)
+
+ ~H"""
+ <.link
+ patch={@patch}
+ class={[
+ "group/card block mt-4",
+ "sm:grid sm:grid-cols-[minmax(10px,_3fr)_minmax(10px,_2fr)]"
+ ]}
+ >
+ <.card_base class={[
+ "p-4 group-hover/card:bg-ltrn-mesh-cyan",
+ "sm:col-span-2 sm:grid sm:grid-cols-subgrid sm:items-center sm:gap-4"
+ ]}>
+
+
+
+ <%= @goal.curriculum_item.curriculum_component.name %>
+
+ <%= @goal.curriculum_item.name %>
+
+
+
+ <.assessment_metadata_icon
+ :if={@goal.is_differentiation || @goal.has_diff_rubric_for_student}
+ type={:diff}
+ />
+ <.assessment_metadata_icon :if={@entry && @entry.report_note} type={:teacher_comment} />
+ <.assessment_metadata_icon
+ :if={@entry && @entry.student_report_note}
+ type={:student_comment}
+ />
+ <.assessment_metadata_icon :if={@goal.report_info} type={:info} />
+ <.assessment_metadata_icon :if={@goal.rubric_id} type={:rubric} />
+
+
+ <.moment_entry :for={moment_entry <- @moment_entries} entry={moment_entry} />
+ <.tooltip><%= gettext("Formative assessment pattern") %>
+
+
+
+ <.assessment_point_entry_display
+ entry={@entry}
+ show_student_assessment
+ prevent_preview={@prevent_preview}
+ class="mt-4 sm:mt-0"
+ />
+
+
+ """
+ end
+
attr :type, :atom, required: true
defp assessment_metadata_icon(%{type: :diff} = assigns) do
@@ -217,25 +270,45 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
|> assign(assigns)
|> assign_strand_goals_student_entries(assigns)
|> assign_strand_goal_id(assigns)
+ |> assign_prevent_final_assessment_preview()
|> assign(:initialized, true)
{:ok, socket}
end
defp assign_strand_goals_student_entries(%{assigns: %{initialized: false}} = socket, assigns) do
- strand_goals_student_entries =
- Assessments.list_strand_goals_student_entries(
+ all_strand_goals_student_entries =
+ Assessments.list_strand_goals_for_student(
assigns.student_report_card.student_id,
assigns.strand_report.strand_id
)
strand_goals_ids =
- strand_goals_student_entries
+ all_strand_goals_student_entries
|> Enum.map(fn {strand_goal, _, _} -> "#{strand_goal.id}" end)
+ strand_goals_student_entries =
+ all_strand_goals_student_entries
+ |> Enum.filter(fn {_, entry, moments_entries} ->
+ not is_nil(entry) or moments_entries != []
+ end)
+
+ strand_goals_without_student_entries =
+ all_strand_goals_student_entries
+ |> Enum.filter(fn {_, entry, moments_entries} -> is_nil(entry) and moments_entries == [] end)
+
socket
|> assign(:strand_goals_student_entries, strand_goals_student_entries)
|> assign(:strand_goals_ids, strand_goals_ids)
+ |> assign(:strand_goals_without_student_entries, strand_goals_without_student_entries)
+ |> assign(
+ :has_strand_goals_with_student_entries,
+ strand_goals_student_entries != []
+ )
+ |> assign(
+ :has_strand_goals_without_student_entries,
+ strand_goals_without_student_entries != []
+ )
end
defp assign_strand_goals_student_entries(socket, _assigns), do: socket
@@ -253,4 +326,18 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
end
defp assign_strand_goal_id(socket, _assigns), do: assign(socket, :strand_goal_id, nil)
+
+ defp assign_prevent_final_assessment_preview(socket) do
+ profile = socket.assigns.current_profile
+
+ prevent_final_assessment_preview =
+ case {profile.type, socket.assigns.student_report_card} do
+ {"teacher", _} -> false
+ {"student", %{allow_student_access: true}} -> false
+ {"guardian", %{allow_guardian_access: true}} -> false
+ _ -> true
+ end
+
+ assign(socket, :prevent_final_assessment_preview, prevent_final_assessment_preview)
+ end
end
diff --git a/lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex b/lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex
index adb86155..fc9d2993 100644
--- a/lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex
+++ b/lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex
@@ -25,7 +25,8 @@ defmodule LantternWeb.Reporting.StrandReportMomentsComponent do
~H"""
<.responsive_container>
-
+
<%= gettext("Strand moments") %>
+
<%= gettext("Here you'll find information about the strand learning journey.") %>
diff --git a/test/lanttern/assessments_test.exs b/test/lanttern/assessments_test.exs
index 483e49e4..44e32fb5 100644
--- a/test/lanttern/assessments_test.exs
+++ b/test/lanttern/assessments_test.exs
@@ -868,12 +868,12 @@ defmodule Lanttern.AssessmentsTest do
alias Lanttern.RubricsFixtures
alias Lanttern.SchoolsFixtures
- test "list_strand_goals_student_entries/2 returns the list of strand goals with student assessments" do
+ test "list_strand_goals_for_student/2 returns the list of strand goals with student assessments" do
# | moment_1 | moment_2 | moment_3 |
# ---------------------------------------
- # ci_1 | 2* | 1 | 1 | (* no entry in m1 pos 2 and m3)
- # ci_2 | - | 1 | - |
- # ci_3 | - | - | - |
+ # ci_1 | 2* | 1 | 1 | (* no entry in m1 pos 2 and m3)
+ # ci_2 | - | 1 | - |
+ # ci_3* | - | - | - | (* no entry for goal)
strand = LearningContextFixtures.strand_fixture()
@@ -966,15 +966,6 @@ defmodule Lanttern.AssessmentsTest do
score: 5.0
})
- entry_3 =
- assessment_point_entry_fixture(%{
- assessment_point_id: assessment_point_3.id,
- student_id: student.id,
- scale_id: ordinal_scale.id,
- scale_type: ordinal_scale.type,
- ordinal_value_id: ordinal_value.id
- })
-
ci_1_m_1_1 =
assessment_point_fixture(%{
curriculum_item_id: curriculum_item_1.id,
@@ -1046,11 +1037,10 @@ defmodule Lanttern.AssessmentsTest do
})
assert [
- {expected_ap_1, expected_entry_1,
- [expected_ci_1_m_1_1, nil, expected_ci_1_m_2, nil]},
+ {expected_ap_1, expected_entry_1, [expected_ci_1_m_1_1, expected_ci_1_m_2]},
{expected_ap_2, expected_entry_2, [expected_ci_2_m_2]},
- {expected_ap_3, expected_entry_3, []}
- ] = Assessments.list_strand_goals_student_entries(student.id, strand.id)
+ {expected_ap_3, nil, []}
+ ] = Assessments.list_strand_goals_for_student(student.id, strand.id)
assert expected_ap_1.id == assessment_point_1.id
assert expected_ap_1.scale_id == ordinal_scale.id
@@ -1084,8 +1074,6 @@ defmodule Lanttern.AssessmentsTest do
assert expected_ap_3.curriculum_item.id == curriculum_item_3.id
assert expected_ap_3.curriculum_item.curriculum_component.id == curriculum_component_3.id
assert expected_ap_3.curriculum_item.id == curriculum_item_3.id
- assert expected_entry_3.id == entry_3.id
- assert expected_entry_3.ordinal_value.id == ordinal_value.id
end
end
From 40dc1a506633a7a112788dea59bb45f99d30085b Mon Sep 17 00:00:00 2001
From: endoooo
Date: Tue, 3 Sep 2024 10:48:23 -0300
Subject: [PATCH 08/11] chore: created `Assessments.EntryParticleComponent`
this is a new implementation of the `<.moment_entry>` function component in `Reporting.StrandReportAssessmentComponent`. the old component expected the ordinal value preload, and the new handles the ordinal value "preload" in the component `update_many` to reduce the amount of duplicated data being transfered from one component to another
---
lib/lanttern/assessments.ex | 13 +--
lib/lanttern/grading.ex | 33 ++++---
.../assessments/entry_particle_component.ex | 94 +++++++++++++++++++
.../strand_report_assessment_component.ex | 46 ++-------
test/lanttern/assessments_test.exs | 8 +-
test/lanttern/grading_test.exs | 19 ++++
6 files changed, 145 insertions(+), 68 deletions(-)
create mode 100644 lib/lanttern_web/live/shared/assessments/entry_particle_component.ex
diff --git a/lib/lanttern/assessments.ex b/lib/lanttern/assessments.ex
index 3ec23bd4..56d70f06 100644
--- a/lib/lanttern/assessments.ex
+++ b/lib/lanttern/assessments.ex
@@ -998,9 +998,6 @@ defmodule Lanttern.Assessments do
- `:has_diff_rubric_for_student` calculated based on student id
- curriculum item with curriculum component
- Assessment point entry preload:
- - `ordinal_value` and `student_ordinal_value`
-
"""
@spec list_strand_goals_for_student(student_id :: pos_integer(), strand_id :: pos_integer()) ::
@@ -1048,19 +1045,11 @@ defmodule Lanttern.Assessments do
join: m in assoc(ap, :moment),
join: e in AssessmentPointEntry,
on: e.assessment_point_id == ap.id and e.student_id == ^student_id,
- left_join: ov in assoc(e, :ordinal_value),
- left_join: s_ov in assoc(e, :student_ordinal_value),
where: m.strand_id == ^strand_id,
order_by: [asc: m.position, asc: ap.position],
- select: {ap.curriculum_item_id, e, ov, s_ov}
+ select: {ap.curriculum_item_id, e}
)
|> Repo.all()
- |> Enum.map(fn {ci_id, e, ov, s_ov} ->
- {
- ci_id,
- e && %{e | ordinal_value: ov, student_ordinal_value: s_ov}
- }
- end)
|> Enum.group_by(
fn {ci_id, _e} -> ci_id end,
fn {_ci_id, e} -> e end
diff --git a/lib/lanttern/grading.ex b/lib/lanttern/grading.ex
index 854d2f96..06a6b418 100644
--- a/lib/lanttern/grading.ex
+++ b/lib/lanttern/grading.ex
@@ -143,6 +143,7 @@ defmodule Lanttern.Grading do
`:preloads` – preloads associated data
`:scale_id` – filter ordinal values by scale and order results by `normalized_value`
+ `:ids` – filter ordinal values by given ids
## Examples
@@ -151,26 +152,30 @@ defmodule Lanttern.Grading do
"""
def list_ordinal_values(opts \\ []) do
- OrdinalValue
- |> maybe_filter_ordinal_values_by_scale(opts)
+ from(
+ ov in OrdinalValue,
+ order_by: ov.normalized_value
+ )
+ |> apply_list_ordinal_values_opts(opts)
|> Repo.all()
|> maybe_preload(opts)
end
- defp maybe_filter_ordinal_values_by_scale(ordinal_value_query, opts) do
- case Keyword.get(opts, :scale_id) do
- nil ->
- ordinal_value_query
-
- scale_id ->
- from(
- ov in ordinal_value_query,
- where: ov.scale_id == ^scale_id,
- order_by: ov.normalized_value
- )
- end
+ defp apply_list_ordinal_values_opts(queryable, []), do: queryable
+
+ defp apply_list_ordinal_values_opts(queryable, [{:scale_id, scale_id} | opts]) do
+ from(ov in queryable, where: ov.scale_id == ^scale_id)
+ |> apply_list_ordinal_values_opts(opts)
+ end
+
+ defp apply_list_ordinal_values_opts(queryable, [{:ids, ids} | opts]) do
+ from(ov in queryable, where: ov.id in ^ids)
+ |> apply_list_ordinal_values_opts(opts)
end
+ defp apply_list_ordinal_values_opts(queryable, [_ | opts]),
+ do: apply_list_ordinal_values_opts(queryable, opts)
+
@doc """
Gets a single ordinal_value.
Optionally preloads associated data.
diff --git a/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex b/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex
new file mode 100644
index 00000000..8b722219
--- /dev/null
+++ b/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex
@@ -0,0 +1,94 @@
+defmodule LantternWeb.Assessments.EntryParticleComponent do
+ @moduledoc """
+ This component renders assessment point particles, small visual representations
+ of assessments for dataviz.
+
+ As multiple instances of this components are rendered at the same time,
+ the component also handles the ordinal values "preload" through `update_many/1`.
+
+ #### Expected external assigns
+
+ attr :entry, AssessmentPointEntry
+ attr :class, :any
+
+ """
+ use LantternWeb, :live_component
+
+ alias Lanttern.Grading
+
+ @impl true
+ def render(assigns) do
+ ~H"""
+
+ <%= @text %>
+
+ """
+ end
+
+ # lifecycle
+
+ @impl true
+ def mount(socket) do
+ socket =
+ socket
+ |> assign(:class, nil)
+
+ {:ok, socket}
+ end
+
+ @impl true
+ def update_many(assigns_sockets) do
+ ordinal_values_ids =
+ assigns_sockets
+ |> Enum.map(fn {assigns, _socket} ->
+ assigns.entry && assigns.entry.ordinal_value_id
+ end)
+ |> Enum.filter(&(not is_nil(&1)))
+ |> Enum.uniq()
+
+ # map format
+ # %{
+ # ordinal_value_id: %OrdinalValue{},
+ # ...
+ # }
+ ovs_map =
+ Grading.list_ordinal_values(ids: ordinal_values_ids)
+ |> Enum.map(&{&1.id, &1})
+ |> Enum.into(%{})
+
+ assigns_sockets
+ |> Enum.map(&update_single(&1, ovs_map))
+ end
+
+ defp update_single({assigns, socket}, ovs_map) do
+ {additional_classes, style, text} =
+ case assigns.entry do
+ %{scale_type: "ordinal"} = entry ->
+ ordinal_value = ovs_map[entry.ordinal_value_id]
+
+ style =
+ "color: #{ordinal_value.text_color}; background-color: #{ordinal_value.bg_color}"
+
+ {nil, style, "•"}
+
+ %{scale_type: "numeric"} ->
+ {"text-ltrn-dark bg-ltrn-lighter", nil, "•"}
+
+ nil ->
+ {"border border-dashed border-ltrn-light text-ltrn-light", nil, "-"}
+ end
+
+ socket
+ |> assign(assigns)
+ |> assign(:additional_classes, additional_classes)
+ |> assign(:style, style)
+ |> assign(:text, text)
+ end
+end
diff --git a/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex b/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex
index bf3c9ebd..fe20d225 100644
--- a/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex
+++ b/lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex
@@ -20,8 +20,8 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
alias LantternWeb.Assessments.StrandGoalDetailsOverlayComponent
# shared components
+ alias LantternWeb.Assessments.EntryParticleComponent
import LantternWeb.AssessmentsComponents
- # import LantternWeb.ReportingComponents
@impl true
def render(assigns) do
@@ -150,7 +150,13 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
<.assessment_metadata_icon :if={@goal.rubric_id} type={:rubric} />
- <.moment_entry :for={moment_entry <- @moment_entries} entry={moment_entry} />
+ <.live_component
+ :for={moment_entry <- @moment_entries}
+ module={EntryParticleComponent}
+ id={moment_entry.id}
+ entry={moment_entry}
+ class="flex-1"
+ />
<.tooltip><%= gettext("Formative assessment pattern") %>
@@ -214,42 +220,6 @@ defmodule LantternWeb.Reporting.StrandReportAssessmentComponent do
defp assessment_metadata_icon_attrs(:rubric),
do: {gettext("Has rubric"), "hero-view-columns-mini", "bg-ltrn-lighter", "text-ltrn-subtle"}
- attr :entry, :any, required: true
-
- defp moment_entry(assigns) do
- {additional_classes, style, text} =
- case assigns.entry do
- %{scale_type: "ordinal"} = entry ->
- {nil,
- "color: #{entry.ordinal_value.text_color}; background-color: #{entry.ordinal_value.bg_color}",
- "•"}
-
- %{scale_type: "numeric"} ->
- {"text-ltrn-dark bg-ltrn-lighter", nil, "•"}
-
- nil ->
- {"border border-dashed border-ltrn-light text-ltrn-light", nil, "-"}
- end
-
- assigns =
- assigns
- |> assign(:additional_classes, additional_classes)
- |> assign(:style, style)
- |> assign(:text, text)
-
- ~H"""
-
- """
- end
-
# lifecycle
@impl true
diff --git a/test/lanttern/assessments_test.exs b/test/lanttern/assessments_test.exs
index 44e32fb5..4a586105 100644
--- a/test/lanttern/assessments_test.exs
+++ b/test/lanttern/assessments_test.exs
@@ -1050,12 +1050,12 @@ defmodule Lanttern.AssessmentsTest do
assert expected_ap_1.curriculum_item.curriculum_component.id == curriculum_component_1.id
assert expected_ap_1.curriculum_item.id == curriculum_item_1.id
assert expected_entry_1.id == entry_1.id
- assert expected_entry_1.ordinal_value.id == ordinal_value.id
+ assert expected_entry_1.ordinal_value_id == ordinal_value.id
assert expected_ci_1_m_1_1.id == entry_ci_1_m_1_1.id
- assert expected_ci_1_m_1_1.ordinal_value.id == ordinal_value.id
+ assert expected_ci_1_m_1_1.ordinal_value_id == ordinal_value.id
assert expected_ci_1_m_2.id == entry_ci_1_m_2.id
- assert expected_ci_1_m_2.ordinal_value.id == ordinal_value.id
+ assert expected_ci_1_m_2.ordinal_value_id == ordinal_value.id
assert expected_ap_2.id == assessment_point_2.id
assert expected_ap_2.scale_id == numeric_scale.id
@@ -1065,7 +1065,7 @@ defmodule Lanttern.AssessmentsTest do
assert expected_entry_2.score == 5.0
assert expected_ci_2_m_2.id == entry_ci_2_m_2.id
- assert expected_ci_2_m_2.ordinal_value.id == ordinal_value.id
+ assert expected_ci_2_m_2.ordinal_value_id == ordinal_value.id
assert expected_ap_3.id == assessment_point_3.id
assert expected_ap_3.scale_id == ordinal_scale.id
diff --git a/test/lanttern/grading_test.exs b/test/lanttern/grading_test.exs
index 5fc0b0ac..76a0f553 100644
--- a/test/lanttern/grading_test.exs
+++ b/test/lanttern/grading_test.exs
@@ -321,6 +321,25 @@ defmodule Lanttern.GradingTest do
]
end
+ test "list_ordinal_values/1 with ids returns all ordinal_values filtered by given ids" do
+ ordinal_value_1 = ordinal_value_fixture(%{normalized_value: 0})
+ ordinal_value_3 = ordinal_value_fixture(%{normalized_value: 1})
+ ordinal_value_2 = ordinal_value_fixture(%{normalized_value: 0.5})
+ _other_ordinal_value = ordinal_value_fixture()
+
+ ids = [
+ ordinal_value_1.id,
+ ordinal_value_2.id,
+ ordinal_value_3.id
+ ]
+
+ assert Grading.list_ordinal_values(ids: ids) == [
+ ordinal_value_1,
+ ordinal_value_2,
+ ordinal_value_3
+ ]
+ end
+
test "get_ordinal_value!/2 returns the ordinal_value with given id" do
ordinal_value = ordinal_value_fixture()
assert Grading.get_ordinal_value!(ordinal_value.id) == ordinal_value
From d5f5bcf49615f6ad0cdcc6ae7832d88e08006475 Mon Sep 17 00:00:00 2001
From: endoooo
Date: Tue, 3 Sep 2024 13:20:22 -0300
Subject: [PATCH 09/11] feat: added formative assessment pattern to student
strands page
- adjusted `LearningContext.list_student_strands/2` to include moments entries
- added support to `:size` attr in `Assessments.EntryParticleComponent`
---
lib/lanttern/learning_context.ex | 69 +++++++++++++------
.../student_strands/student_strands_live.ex | 5 +-
.../student_strands_live.html.heex | 17 ++++-
.../assessments/entry_particle_component.ex | 10 ++-
test/lanttern/learning_context_test.exs | 68 ++++++++++++++++--
5 files changed, 138 insertions(+), 31 deletions(-)
diff --git a/lib/lanttern/learning_context.ex b/lib/lanttern/learning_context.ex
index 27d64802..5ca28772 100644
--- a/lib/lanttern/learning_context.ex
+++ b/lib/lanttern/learning_context.ex
@@ -8,6 +8,7 @@ defmodule Lanttern.LearningContext do
import LantternWeb.Gettext
alias Lanttern.Repo
+ alias Lanttern.Assessments.AssessmentPointEntry
alias Lanttern.LearningContext.Strand
alias Lanttern.LearningContext.StarredStrand
alias Lanttern.LearningContext.Moment
@@ -51,13 +52,15 @@ defmodule Lanttern.LearningContext do
end
@doc """
- Returns the list of strands linked to the student.
+ Returns the list of strands linked to the student with
+ linked moments entries.
Strands are "linked to the student" through report cards:
strand -> strand report -> report card -> student report card
- Results are ordered by cycle (desc), then by strand report position.
+ Strands results are ordered by cycle (desc), then by strand report position.
+ Entries are ordered by moment position, then by assessment point position.
Preloads subjects, years, and report cycle.
@@ -72,27 +75,53 @@ defmodule Lanttern.LearningContext do
## Examples
iex> list_student_strands(1)
- [%Strand{}, ...]
+ [{%Strand{}, [%AssessmentPointEntry{}, ...]}, ...]
"""
- @spec list_student_strands(student_id :: pos_integer(), opts :: Keyword.t()) :: [Strand.t()]
+ @spec list_student_strands(student_id :: pos_integer(), opts :: Keyword.t()) :: [
+ {Strand.t(), [AssessmentPointEntry.t()]}
+ ]
def list_student_strands(student_id, opts \\ []) do
- from(
- s in Strand,
- left_join: sub in assoc(s, :subjects),
- left_join: y in assoc(s, :years),
- join: sr in assoc(s, :strand_reports),
- join: rc in assoc(sr, :report_card),
- join: c in assoc(rc, :school_cycle),
- as: :cycles,
- join: src in assoc(rc, :students_report_cards),
- order_by: [desc: c.end_at, asc: c.start_at, asc: sr.position],
- where: src.student_id == ^student_id,
- preload: [subjects: sub, years: y],
- select: %{s | strand_report_id: sr.id, report_cycle: c}
- )
- |> apply_list_student_strands_opts(opts)
- |> Repo.all()
+ student_strands =
+ from(
+ s in Strand,
+ left_join: sub in assoc(s, :subjects),
+ left_join: y in assoc(s, :years),
+ join: sr in assoc(s, :strand_reports),
+ join: rc in assoc(sr, :report_card),
+ join: c in assoc(rc, :school_cycle),
+ as: :cycles,
+ join: src in assoc(rc, :students_report_cards),
+ order_by: [desc: c.end_at, asc: c.start_at, asc: sr.position],
+ where: src.student_id == ^student_id,
+ preload: [subjects: sub, years: y],
+ select: %{s | strand_report_id: sr.id, report_cycle: c}
+ )
+ |> apply_list_student_strands_opts(opts)
+ |> Repo.all()
+
+ student_strands_ids =
+ student_strands
+ |> Enum.map(& &1.id)
+
+ student_strands_entries_map =
+ from(
+ e in AssessmentPointEntry,
+ join: ap in assoc(e, :assessment_point),
+ join: m in assoc(ap, :moment),
+ where: m.strand_id in ^student_strands_ids,
+ where: e.student_id == ^student_id,
+ order_by: [asc: m.position, asc: ap.position],
+ select: {e, m.strand_id}
+ )
+ |> Repo.all()
+ |> Enum.group_by(
+ fn {_entry, strand_id} -> strand_id end,
+ fn {entry, _strand_id} -> entry end
+ )
+
+ student_strands
+ |> Enum.map(&{&1, Map.get(student_strands_entries_map, &1.id, [])})
end
defp apply_list_student_strands_opts(queryable, []), do: queryable
diff --git a/lib/lanttern_web/live/pages/student_strands/student_strands_live.ex b/lib/lanttern_web/live/pages/student_strands/student_strands_live.ex
index 056adbf9..ae9e84d9 100644
--- a/lib/lanttern_web/live/pages/student_strands/student_strands_live.ex
+++ b/lib/lanttern_web/live/pages/student_strands/student_strands_live.ex
@@ -13,8 +13,9 @@ defmodule LantternWeb.StudentStrandsLive do
import LantternWeb.FiltersHelpers
# shared components
- import LantternWeb.LearningContextComponents
+ alias LantternWeb.Assessments.EntryParticleComponent
alias LantternWeb.Filters.InlineFiltersComponent
+ import LantternWeb.LearningContextComponents
import LantternWeb.SchoolsComponents
@impl true
@@ -45,7 +46,7 @@ defmodule LantternWeb.StudentStrandsLive do
# (some strands can be in more than one report card at the same time)
|> stream_configure(
:student_strands,
- dom_id: fn strand -> "student-strand-report-#{strand.strand_report_id}" end
+ dom_id: fn {strand, _entries} -> "student-strand-report-#{strand.strand_report_id}" end
)
|> stream_student_strands()
diff --git a/lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex b/lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex
index adf162d1..49fac398 100644
--- a/lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex
+++ b/lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex
@@ -19,13 +19,26 @@
<.responsive_grid :if={@has_student_strands} id="student-strands" phx-update="stream">
<.strand_card
- :for={{dom_id, strand} <- @streams.student_strands}
+ :for={{dom_id, {strand, entries}} <- @streams.student_strands}
id={dom_id}
strand={strand}
cover_image_url={strand.cover_image_url}
navigate={~p"/strand_report/#{strand.strand_report_id}"}
hide_description
class="shrink-0 w-64 sm:w-auto"
- />
+ >
+ <:bottom_content :if={entries != []}>
+
+ <.live_component
+ :for={entry <- entries}
+ module={EntryParticleComponent}
+ id={entry.id}
+ entry={entry}
+ size="sm"
+ />
+ <.tooltip h_pos="center"><%= gettext("Formative assessment pattern") %>
+
+
+
<.school_branding_footer school={@school} />
diff --git a/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex b/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex
index 8b722219..14b8592d 100644
--- a/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex
+++ b/lib/lanttern_web/live/shared/assessments/entry_particle_component.ex
@@ -9,7 +9,11 @@ defmodule LantternWeb.Assessments.EntryParticleComponent do
#### Expected external assigns
attr :entry, AssessmentPointEntry
- attr :class, :any
+
+ #### Optional assigns
+
+ attr :size, :string, default: "md", doc: "sm | md"
+ attr :class, :any, default: nil
"""
use LantternWeb, :live_component
@@ -21,7 +25,8 @@ defmodule LantternWeb.Assessments.EntryParticleComponent do
~H"""
assign(:size, "md")
|> assign(:class, nil)
{:ok, socket}
diff --git a/test/lanttern/learning_context_test.exs b/test/lanttern/learning_context_test.exs
index f1a3758c..ab3930ce 100644
--- a/test/lanttern/learning_context_test.exs
+++ b/test/lanttern/learning_context_test.exs
@@ -99,7 +99,7 @@ defmodule Lanttern.LearningContextTest do
assert expected_b.is_starred == false
end
- test "list_student_strands/2 returns all user strands related to students report cards" do
+ test "list_student_strands/2 returns all user strands related to students report cards (+ moment entries)" do
student = Lanttern.SchoolsFixtures.student_fixture()
subject_1 = Lanttern.TaxonomyFixtures.subject_fixture()
@@ -115,6 +115,64 @@ defmodule Lanttern.LearningContextTest do
# use same strand in different reports
strand_4 = strand_2
+ # add moments to strand 1, following this structure
+ # moment 1 - 2 assessment points, only first with student entry
+ # moment 2 - 1 assessment point with student entry
+ # moment 3 - no assessment points
+ # expected entries return: m1_ap1, m2_ap1
+
+ moment_1 = moment_fixture(%{strand_id: strand_1.id})
+ moment_2 = moment_fixture(%{strand_id: strand_1.id})
+ _moment_3 = moment_fixture(%{strand_id: strand_1.id})
+
+ scale = Lanttern.GradingFixtures.scale_fixture(%{type: "ordinal"})
+ ov = Lanttern.GradingFixtures.ordinal_value_fixture(%{scale_id: scale.id})
+
+ ap_m1_1 =
+ Lanttern.AssessmentsFixtures.assessment_point_fixture(%{
+ moment_id: moment_1.id,
+ scale_id: scale.id
+ })
+
+ _ap_m1_2 =
+ Lanttern.AssessmentsFixtures.assessment_point_fixture(%{
+ moment_id: moment_1.id,
+ scale_id: scale.id
+ })
+
+ ap_m2_1 =
+ Lanttern.AssessmentsFixtures.assessment_point_fixture(%{
+ moment_id: moment_2.id,
+ scale_id: scale.id
+ })
+
+ entry_m1_1 =
+ Lanttern.AssessmentsFixtures.assessment_point_entry_fixture(%{
+ student_id: student.id,
+ assessment_point_id: ap_m1_1.id,
+ scale_id: scale.id,
+ scale_type: scale.type,
+ ordinal_value_id: ov.id
+ })
+
+ entry_m2_1 =
+ Lanttern.AssessmentsFixtures.assessment_point_entry_fixture(%{
+ student_id: student.id,
+ assessment_point_id: ap_m2_1.id,
+ scale_id: scale.id,
+ scale_type: scale.type,
+ ordinal_value_id: ov.id
+ })
+
+ # entry for other student
+ _other_entry_m2_1 =
+ Lanttern.AssessmentsFixtures.assessment_point_entry_fixture(%{
+ assessment_point_id: ap_m2_1.id,
+ scale_id: scale.id,
+ scale_type: scale.type,
+ ordinal_value_id: ov.id
+ })
+
cycle_2024 =
Lanttern.SchoolsFixtures.cycle_fixture(start_at: ~D[2024-01-01], end_at: ~D[2024-12-31])
@@ -183,10 +241,10 @@ defmodule Lanttern.LearningContextTest do
})
assert [
- expected_strand_1,
- expected_strand_2,
- expected_strand_3,
- expected_strand_4
+ {expected_strand_1, [^entry_m1_1, ^entry_m2_1]},
+ {expected_strand_2, []},
+ {expected_strand_3, []},
+ {expected_strand_4, []}
] =
LearningContext.list_student_strands(
student.id,
From 89b0566a9e8221285e91e98496fe6c0b48d045c0 Mon Sep 17 00:00:00 2001
From: endoooo
Date: Tue, 3 Sep 2024 13:48:42 -0300
Subject: [PATCH 10/11] feat: added support to teacher comment in
`<.moment_assessment_point_entry>` component
- created reporting `<.comment_area>` component
---
.../components/reporting_components.ex | 51 +++++++++++++++++--
.../strand_goal_details_overlay_component.ex | 24 +++------
2 files changed, 53 insertions(+), 22 deletions(-)
diff --git a/lib/lanttern_web/components/reporting_components.ex b/lib/lanttern_web/components/reporting_components.ex
index be07d336..175b7f38 100644
--- a/lib/lanttern_web/components/reporting_components.ex
+++ b/lib/lanttern_web/components/reporting_components.ex
@@ -20,6 +20,44 @@ defmodule LantternWeb.ReportingComponents do
alias Lanttern.Schools.Cycle
alias Lanttern.Taxonomy.Year
+ @doc """
+ Renders a teacher or student comment area
+ """
+
+ attr :comment, :string, required: true
+ attr :type, :string, default: "teacher", doc: "teacher | student"
+ attr :class, :any, default: nil
+
+ def comment_area(assigns) do
+ {bg_class, icon_class, text_class, text} =
+ case assigns.type do
+ "teacher" ->
+ {"bg-ltrn-teacher-lightest", "text-ltrn-teacher-accent", "text-ltrn-teacher-dark",
+ gettext("Teacher comment")}
+
+ "student" ->
+ {"bg-ltrn-student-lightest", "text-ltrn-student-accent", "text-ltrn-student-dark",
+ gettext("Student comment")}
+ end
+
+ assigns =
+ assigns
+ |> assign(:bg_class, bg_class)
+ |> assign(:icon_class, icon_class)
+ |> assign(:text_class, text_class)
+ |> assign(:text, text)
+
+ ~H"""
+
+
+ <.icon name="hero-chat-bubble-oval-left" class={["w-6 h-6", @icon_class]} />
+ <%= @text %>
+
+ <.markdown text={@comment} size="sm" class="max-w-none mt-4" />
+
+ """
+ end
+
@doc """
Renders a report card card (yes, card card, 2x).
"""
@@ -262,10 +300,15 @@ defmodule LantternWeb.ReportingComponents do
def moment_assessment_point_entry(assigns) do
~H"""
-
- <.badge :if={@assessment_point.is_differentiation} theme="diff"><%= gettext("Diff") %>
-
<%= @assessment_point.name %>
- <.assessment_point_entry_badge entry={@entry} class="shrink-0" />
+
+
+ <.badge :if={@assessment_point.is_differentiation} theme="diff">
+ <%= gettext("Diff") %>
+
+
<%= @assessment_point.name %>
+ <.assessment_point_entry_badge entry={@entry} class="shrink-0" />
+
+ <.comment_area :if={@entry && @entry.report_note} comment={@entry.report_note} class="mt-2" />
"""
end
diff --git a/lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex b/lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex
index 4c8df741..e36ad847 100644
--- a/lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex
+++ b/lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex
@@ -48,25 +48,13 @@ defmodule LantternWeb.Assessments.StrandGoalDetailsOverlayComponent do
show_student_assessment
prevent_preview={@prevent_preview}
/>
-
-
- <.icon name="hero-chat-bubble-oval-left" class="w-6 h-6 text-ltrn-teacher-accent" />
- <%= gettext("Teacher comment") %>
-
- <.markdown text={@entry.report_note} size="sm" class="max-w-none mt-4" />
-
-
+ <.comment_area
:if={@entry && @entry.student_report_note}
- class="p-4 rounded mt-4 bg-ltrn-student-lightest"
- >
-
- <.icon name="hero-chat-bubble-oval-left" class="w-6 h-6 text-ltrn-student-accent" />
-
- <%= gettext("Student comment") %>
-
-
- <.markdown text={@entry.student_report_note} size="sm" class="max-w-none mt-4" />
-
+ comment={@entry.student_report_note}
+ class="mt-4"
+ type="student"
+ />
From 5188cfc46510cb0c862d5ea27eec228c02c9f896 Mon Sep 17 00:00:00 2001
From: endoooo
Date: Tue, 3 Sep 2024 14:10:37 -0300
Subject: [PATCH 11/11] chore: updated translations and version
---
mix.exs | 2 +-
priv/gettext/default.pot | 193 ++++++++++-----------
priv/gettext/en/LC_MESSAGES/default.po | 193 ++++++++++-----------
priv/gettext/pt_BR/LC_MESSAGES/default.po | 199 +++++++++++-----------
4 files changed, 295 insertions(+), 292 deletions(-)
diff --git a/mix.exs b/mix.exs
index 7e2be575..520a2c3d 100644
--- a/mix.exs
+++ b/mix.exs
@@ -4,7 +4,7 @@ defmodule Lanttern.MixProject do
def project do
[
app: :lanttern,
- version: "2024.8.12-alpha.28",
+ version: "2024.9.3-alpha.28",
elixir: "~> 1.15",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index 4f057aa7..ac336732 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -47,7 +47,11 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/moment/id/moment_live.html.heex:9
#: lib/lanttern_web/live/pages/strands/strands_live.ex:52
#: lib/lanttern_web/live/pages/strands/strands_live.html.heex:2
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:10
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:2
#: lib/lanttern_web/live/shared/menu_component.ex:37
+#: lib/lanttern_web/live/shared/menu_component.ex:64
+#: lib/lanttern_web/live/shared/menu_component.ex:76
#, elixir-autogen, elixir-format
msgid "Strands"
msgstr ""
@@ -59,23 +63,23 @@ msgstr ""
msgid "close"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:115
+#: lib/lanttern_web/live/shared/menu_component.ex:118
#, elixir-autogen, elixir-format
msgid "Change profile"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:152
+#: lib/lanttern_web/live/shared/menu_component.ex:155
#, elixir-autogen, elixir-format
msgid "Language:"
msgstr ""
#: lib/lanttern_web/controllers/privacy_policy_html/accept_policy.html.heex:25
-#: lib/lanttern_web/live/shared/menu_component.ex:145
+#: lib/lanttern_web/live/shared/menu_component.ex:148
#, elixir-autogen, elixir-format
msgid "Log out"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:87
+#: lib/lanttern_web/live/shared/menu_component.ex:90
#, elixir-autogen, elixir-format
msgid "You're logged in as"
msgstr ""
@@ -86,7 +90,7 @@ msgid "All strands"
msgstr ""
#: lib/lanttern_web/live/shared/filters/filters_overlay_component.ex:33
-#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:32
+#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:33
#, elixir-autogen, elixir-format
msgid "Apply filters"
msgstr ""
@@ -371,7 +375,8 @@ msgid "About"
msgstr ""
#: lib/lanttern_web/components/grades_reports_components.ex:604
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:61
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:61
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:48
#, elixir-autogen, elixir-format
msgid "Assessment"
msgstr ""
@@ -421,8 +426,8 @@ msgid "Strand deleted"
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:25
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:61
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:31
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:31
#, elixir-autogen, elixir-format
msgid "Add a strand note"
msgstr ""
@@ -479,10 +484,10 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/id/about_component.ex:54
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:74
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:117
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:62
#: lib/lanttern_web/live/shared/assessments/assessment_point_form_component.ex:84
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:28
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:65
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:181
#, elixir-autogen, elixir-format
msgid "Differentiation"
msgstr ""
@@ -584,6 +589,7 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:24
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:28
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:28
#, elixir-autogen, elixir-format
msgid "You don't have any notes for this strand yet"
msgstr ""
@@ -757,7 +763,7 @@ msgstr ""
msgid "to assess students"
msgstr ""
-#: lib/lanttern/learning_context/strand.ex:90
+#: lib/lanttern/learning_context/strand.ex:95
#, elixir-autogen, elixir-format
msgid "Strand has linked assessment points."
msgstr ""
@@ -830,7 +836,8 @@ msgid "Moment updated successfully"
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/strand_live.html.heex:43
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:69
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:69
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:54
#, elixir-autogen, elixir-format
msgid "Moments"
msgstr ""
@@ -855,7 +862,7 @@ msgstr ""
msgid "Save moment"
msgstr ""
-#: lib/lanttern/learning_context.ex:443
+#: lib/lanttern/learning_context.ex:531
#: lib/lanttern/repo_helpers.ex:122
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:53
#: lib/lanttern_web/live/pages/report_cards/id/students_grades_component.ex:283
@@ -880,12 +887,13 @@ msgstr ""
msgid "Strand has linked moments and/or assessment points (goals). Deleting it would cause some data loss."
msgstr ""
-#: lib/lanttern/learning_context/strand.ex:85
+#: lib/lanttern/learning_context/strand.ex:90
#, elixir-autogen, elixir-format
msgid "Strand has linked moments."
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/moments_component.ex:19
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:28
#, elixir-autogen, elixir-format
msgid "Strand moments"
msgstr ""
@@ -1067,7 +1075,8 @@ msgstr ""
msgid "Curriculum components"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:28
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:39
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:60
#, elixir-autogen, elixir-format
msgid "Curriculum differentiation"
msgstr ""
@@ -1082,12 +1091,13 @@ msgstr ""
msgid "Curriculum items"
msgstr ""
-#: lib/lanttern_web/components/reporting_components.ex:70
+#: lib/lanttern_web/components/reporting_components.ex:108
#: lib/lanttern_web/live/pages/grading/grades_reports_live.html.heex:39
#: lib/lanttern_web/live/pages/report_cards/id/report_card_live.html.heex:14
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:34
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:34
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:23
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:107
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:25
#: lib/lanttern_web/live/shared/reporting/report_card_form_component.ex:37
#, elixir-autogen, elixir-format
msgid "Cycle"
@@ -1099,7 +1109,7 @@ msgstr ""
msgid "Cycle already added to this grade report"
msgstr ""
-#: lib/lanttern_web/components/reporting_components.ex:266
+#: lib/lanttern_web/components/reporting_components.ex:306
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:27
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:106
#: lib/lanttern_web/live/shared/assessments/assessments_grid_component.ex:353
@@ -1463,7 +1473,8 @@ msgid "Normalized value"
msgstr ""
#: lib/lanttern_web/live/pages/strands/moment/id/moment_live.html.heex:40
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:53
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:53
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:42
#, elixir-autogen, elixir-format
msgid "Overview"
msgstr ""
@@ -1519,6 +1530,8 @@ msgstr ""
#: lib/lanttern_web/live/pages/report_cards/report_cards_live.ex:29
#: lib/lanttern_web/live/pages/strands/id/about_component.ex:112
#: lib/lanttern_web/live/shared/menu_component.ex:49
+#: lib/lanttern_web/live/shared/menu_component.ex:61
+#: lib/lanttern_web/live/shared/menu_component.ex:73
#, elixir-autogen, elixir-format
msgid "Report cards"
msgstr ""
@@ -1614,7 +1627,8 @@ msgstr ""
msgid "Strand id"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:12
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:12
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:12
#, elixir-autogen, elixir-format
msgid "Strand report"
msgstr ""
@@ -1654,7 +1668,7 @@ msgstr ""
msgid "Student grades calculated succesfully"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:10
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:10
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:5
#, elixir-autogen, elixir-format
msgid "Student report card"
@@ -1802,12 +1816,6 @@ msgstr ""
msgid "%{student}'s report cards"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:61
-#: lib/lanttern_web/live/shared/menu_component.ex:73
-#, elixir-autogen, elixir-format
-msgid "Home"
-msgstr ""
-
#: lib/lanttern_web/controllers/error_html/500.html.heex:32
#, elixir-autogen, elixir-format
msgid "Internal server error"
@@ -1835,13 +1843,13 @@ msgstr ""
msgid "Welcome!"
msgstr ""
-#: lib/lanttern_web/user_auth.ex:282
-#: lib/lanttern_web/user_auth.ex:318
+#: lib/lanttern_web/user_auth.ex:288
+#: lib/lanttern_web/user_auth.ex:345
#, elixir-autogen, elixir-format
msgid "You must log in to access this page."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:97
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:104
#, elixir-autogen, elixir-format
msgid "About this assessment"
msgstr ""
@@ -2006,7 +2014,7 @@ msgstr ""
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:11
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:48
-#: lib/lanttern_web/live/shared/menu_component.ex:183
+#: lib/lanttern_web/live/shared/menu_component.ex:186
#, elixir-autogen, elixir-format
msgid "Privacy policy"
msgstr ""
@@ -2048,7 +2056,7 @@ msgstr ""
msgid "Privacy policy and terms of service"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:191
+#: lib/lanttern_web/live/shared/menu_component.ex:194
#, elixir-autogen, elixir-format
msgid "Terms of service"
msgstr ""
@@ -2103,7 +2111,7 @@ msgstr ""
msgid "to this report card"
msgstr ""
-#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:77
+#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:80
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
@@ -2224,7 +2232,7 @@ msgstr ""
msgid "Students report cards access updated"
msgstr ""
-#: lib/lanttern_web/components/reporting_components.ex:82
+#: lib/lanttern_web/components/reporting_components.ex:120
#, elixir-autogen, elixir-format
msgid "Under development"
msgstr ""
@@ -2234,12 +2242,7 @@ msgstr ""
msgid "Add a moment note"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:34
-#, elixir-autogen, elixir-format
-msgid "Add note"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:8
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:8
#, elixir-autogen, elixir-format
msgid "All cycles"
msgstr ""
@@ -2266,28 +2269,23 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:23
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:23
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:23
#, elixir-autogen, elixir-format
msgid "My strand notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:60
-#, elixir-autogen, elixir-format
-msgid "No notes for this strand yet"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:14
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:16
#, elixir-autogen, elixir-format
msgid "No strands related to selected cycles"
msgstr ""
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:29
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:29
#, elixir-autogen, elixir-format
msgid "No student notes for this strand"
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/strand_live.html.heex:49
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:59
-#: lib/lanttern_web/live/shared/menu_component.ex:64
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -2297,26 +2295,18 @@ msgstr ""
msgid "Select classes to view student notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:77
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:77
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:60
#, elixir-autogen, elixir-format
msgid "Student notes"
msgstr ""
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:24
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:24
#, elixir-autogen, elixir-format
msgid "Student strand notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:77
-#, elixir-autogen, elixir-format
-msgid "View note in report card context"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:34
-#, elixir-autogen, elixir-format
-msgid "View/edit note"
-msgstr ""
-
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:58
#, elixir-autogen, elixir-format
msgid "students strand notes"
@@ -2327,11 +2317,6 @@ msgstr ""
msgid "to view students strand notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:98
-#, elixir-autogen, elixir-format
-msgid "under development"
-msgstr ""
-
#: lib/lanttern_web/live/shared/notes/note_component.ex:88
#, elixir-autogen, elixir-format
msgid "updated"
@@ -2388,13 +2373,8 @@ msgstr ""
msgid "Links should start with \"https://\" or \"http://\""
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:2
-#, elixir-autogen, elixir-format
-msgid "My strands notes"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:71
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:42
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:42
#, elixir-autogen, elixir-format
msgid "Note's attachments"
msgstr ""
@@ -2409,11 +2389,6 @@ msgstr ""
msgid "Or add a link to an external file"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:47
-#, elixir-autogen, elixir-format
-msgid "Strand note"
-msgstr ""
-
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:79
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:111
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:187
@@ -2451,15 +2426,15 @@ msgstr ""
msgid "%{student} comment"
msgstr ""
-#: lib/lanttern_web/components/assessments_components.ex:123
+#: lib/lanttern_web/components/assessments_components.ex:141
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:45
#, elixir-autogen, elixir-format
msgid "Student self-assessment"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:143
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:39
+#: lib/lanttern_web/components/reporting_components.ex:36
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:224
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:207
#, elixir-autogen, elixir-format
msgid "Teacher comment"
msgstr ""
@@ -2641,7 +2616,7 @@ msgstr ""
msgid "Strand assessment"
msgstr ""
-#: lib/lanttern_web/components/assessments_components.ex:120
+#: lib/lanttern_web/components/assessments_components.ex:138
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:42
#, elixir-autogen, elixir-format
msgid "Teacher assessment"
@@ -2688,85 +2663,111 @@ msgstr ""
msgid "Strand removed from your starred list"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:153
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:217
#, elixir-autogen, elixir-format
msgid "Assessment info"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:59
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:62
#, elixir-autogen, elixir-format
msgid "Assessment rubric"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:59
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:62
#, elixir-autogen, elixir-format
msgid "Assessment scale"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:24
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:66
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:69
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:68
#, elixir-autogen, elixir-format
msgid "Criteria:"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:73
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:80
#, elixir-autogen, elixir-format
msgid "Formative assessment"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:83
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:39
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:160
#, elixir-autogen, elixir-format
msgid "Formative assessment pattern"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:157
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:221
#, elixir-autogen, elixir-format
msgid "Has rubric"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:19
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:33
#, elixir-autogen, elixir-format
msgid "Here you'll find information about the strand final and formative assessments."
msgstr ""
#: lib/lanttern_web/components/assessments_components.ex:67
-#: lib/lanttern_web/components/assessments_components.ex:188
+#: lib/lanttern_web/components/assessments_components.ex:206
#, elixir-autogen, elixir-format
msgid "No entry"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:148
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:50
+#: lib/lanttern_web/components/reporting_components.ex:40
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:212
#, elixir-autogen, elixir-format
msgid "Student comment"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:17
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:30
#, elixir-autogen, elixir-format
msgid "Here you'll find information about the strand learning journey."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:61
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:72
#, elixir-autogen, elixir-format
msgid "No moments registered for this strand"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:38
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:32
#, elixir-autogen, elixir-format
msgid "No strand report info yet."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:16
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:27
#, elixir-autogen, elixir-format
msgid "Strand rubrics"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:24
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:38
#, elixir-autogen, elixir-format
msgid "You can click the assessment card to view more details about it."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:20
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:33
#, elixir-autogen, elixir-format
msgid "You can click the moment card to view more details about it, including information about formative assessment."
msgstr ""
+
+#: lib/lanttern_web/components/assessments_components.ex:104
+#, elixir-autogen, elixir-format
+msgid "Final assessment not available yet"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:31
+#, elixir-autogen, elixir-format
+msgid "Goals assessment entries"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:54
+#, elixir-autogen, elixir-format
+msgid "Goals without assessment entries"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:49
+#, elixir-autogen, elixir-format
+msgid "No assessment entries for this strand yet"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:61
+#, elixir-autogen, elixir-format
+msgid "Rubric differentiation"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index ed9d43ff..2f2fd54c 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -47,7 +47,11 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/moment/id/moment_live.html.heex:9
#: lib/lanttern_web/live/pages/strands/strands_live.ex:52
#: lib/lanttern_web/live/pages/strands/strands_live.html.heex:2
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:10
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:2
#: lib/lanttern_web/live/shared/menu_component.ex:37
+#: lib/lanttern_web/live/shared/menu_component.ex:64
+#: lib/lanttern_web/live/shared/menu_component.ex:76
#, elixir-autogen, elixir-format
msgid "Strands"
msgstr ""
@@ -59,23 +63,23 @@ msgstr ""
msgid "close"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:115
+#: lib/lanttern_web/live/shared/menu_component.ex:118
#, elixir-autogen, elixir-format
msgid "Change profile"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:152
+#: lib/lanttern_web/live/shared/menu_component.ex:155
#, elixir-autogen, elixir-format
msgid "Language:"
msgstr ""
#: lib/lanttern_web/controllers/privacy_policy_html/accept_policy.html.heex:25
-#: lib/lanttern_web/live/shared/menu_component.ex:145
+#: lib/lanttern_web/live/shared/menu_component.ex:148
#, elixir-autogen, elixir-format
msgid "Log out"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:87
+#: lib/lanttern_web/live/shared/menu_component.ex:90
#, elixir-autogen, elixir-format
msgid "You're logged in as"
msgstr ""
@@ -86,7 +90,7 @@ msgid "All strands"
msgstr ""
#: lib/lanttern_web/live/shared/filters/filters_overlay_component.ex:33
-#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:32
+#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:33
#, elixir-autogen, elixir-format
msgid "Apply filters"
msgstr ""
@@ -371,7 +375,8 @@ msgid "About"
msgstr ""
#: lib/lanttern_web/components/grades_reports_components.ex:604
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:61
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:61
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:48
#, elixir-autogen, elixir-format, fuzzy
msgid "Assessment"
msgstr ""
@@ -421,8 +426,8 @@ msgid "Strand deleted"
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:25
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:61
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:31
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:31
#, elixir-autogen, elixir-format
msgid "Add a strand note"
msgstr ""
@@ -479,10 +484,10 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/id/about_component.ex:54
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:74
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:117
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:62
#: lib/lanttern_web/live/shared/assessments/assessment_point_form_component.ex:84
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:28
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:65
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:181
#, elixir-autogen, elixir-format
msgid "Differentiation"
msgstr ""
@@ -584,6 +589,7 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:24
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:28
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:28
#, elixir-autogen, elixir-format
msgid "You don't have any notes for this strand yet"
msgstr ""
@@ -757,7 +763,7 @@ msgstr ""
msgid "to assess students"
msgstr ""
-#: lib/lanttern/learning_context/strand.ex:90
+#: lib/lanttern/learning_context/strand.ex:95
#, elixir-autogen, elixir-format
msgid "Strand has linked assessment points."
msgstr ""
@@ -830,7 +836,8 @@ msgid "Moment updated successfully"
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/strand_live.html.heex:43
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:69
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:69
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:54
#, elixir-autogen, elixir-format, fuzzy
msgid "Moments"
msgstr ""
@@ -855,7 +862,7 @@ msgstr ""
msgid "Save moment"
msgstr ""
-#: lib/lanttern/learning_context.ex:443
+#: lib/lanttern/learning_context.ex:531
#: lib/lanttern/repo_helpers.ex:122
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:53
#: lib/lanttern_web/live/pages/report_cards/id/students_grades_component.ex:283
@@ -880,12 +887,13 @@ msgstr ""
msgid "Strand has linked moments and/or assessment points (goals). Deleting it would cause some data loss."
msgstr ""
-#: lib/lanttern/learning_context/strand.ex:85
+#: lib/lanttern/learning_context/strand.ex:90
#, elixir-autogen, elixir-format, fuzzy
msgid "Strand has linked moments."
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/moments_component.ex:19
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:28
#, elixir-autogen, elixir-format, fuzzy
msgid "Strand moments"
msgstr ""
@@ -1067,7 +1075,8 @@ msgstr ""
msgid "Curriculum components"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:28
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:39
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:60
#, elixir-autogen, elixir-format
msgid "Curriculum differentiation"
msgstr ""
@@ -1082,12 +1091,13 @@ msgstr ""
msgid "Curriculum items"
msgstr ""
-#: lib/lanttern_web/components/reporting_components.ex:70
+#: lib/lanttern_web/components/reporting_components.ex:108
#: lib/lanttern_web/live/pages/grading/grades_reports_live.html.heex:39
#: lib/lanttern_web/live/pages/report_cards/id/report_card_live.html.heex:14
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:34
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:34
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:23
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:107
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:25
#: lib/lanttern_web/live/shared/reporting/report_card_form_component.ex:37
#, elixir-autogen, elixir-format
msgid "Cycle"
@@ -1099,7 +1109,7 @@ msgstr ""
msgid "Cycle already added to this grade report"
msgstr ""
-#: lib/lanttern_web/components/reporting_components.ex:266
+#: lib/lanttern_web/components/reporting_components.ex:306
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:27
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:106
#: lib/lanttern_web/live/shared/assessments/assessments_grid_component.ex:353
@@ -1463,7 +1473,8 @@ msgid "Normalized value"
msgstr ""
#: lib/lanttern_web/live/pages/strands/moment/id/moment_live.html.heex:40
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:53
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:53
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:42
#, elixir-autogen, elixir-format
msgid "Overview"
msgstr ""
@@ -1519,6 +1530,8 @@ msgstr ""
#: lib/lanttern_web/live/pages/report_cards/report_cards_live.ex:29
#: lib/lanttern_web/live/pages/strands/id/about_component.ex:112
#: lib/lanttern_web/live/shared/menu_component.ex:49
+#: lib/lanttern_web/live/shared/menu_component.ex:61
+#: lib/lanttern_web/live/shared/menu_component.ex:73
#, elixir-autogen, elixir-format
msgid "Report cards"
msgstr ""
@@ -1614,7 +1627,8 @@ msgstr ""
msgid "Strand id"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:12
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:12
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "Strand report"
msgstr ""
@@ -1654,7 +1668,7 @@ msgstr ""
msgid "Student grades calculated succesfully"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:10
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:10
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:5
#, elixir-autogen, elixir-format
msgid "Student report card"
@@ -1802,12 +1816,6 @@ msgstr ""
msgid "%{student}'s report cards"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:61
-#: lib/lanttern_web/live/shared/menu_component.ex:73
-#, elixir-autogen, elixir-format
-msgid "Home"
-msgstr ""
-
#: lib/lanttern_web/controllers/error_html/500.html.heex:32
#, elixir-autogen, elixir-format
msgid "Internal server error"
@@ -1835,13 +1843,13 @@ msgstr ""
msgid "Welcome!"
msgstr ""
-#: lib/lanttern_web/user_auth.ex:282
-#: lib/lanttern_web/user_auth.ex:318
+#: lib/lanttern_web/user_auth.ex:288
+#: lib/lanttern_web/user_auth.ex:345
#, elixir-autogen, elixir-format
msgid "You must log in to access this page."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:97
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:104
#, elixir-autogen, elixir-format
msgid "About this assessment"
msgstr ""
@@ -2006,7 +2014,7 @@ msgstr ""
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:11
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:48
-#: lib/lanttern_web/live/shared/menu_component.ex:183
+#: lib/lanttern_web/live/shared/menu_component.ex:186
#, elixir-autogen, elixir-format
msgid "Privacy policy"
msgstr ""
@@ -2048,7 +2056,7 @@ msgstr ""
msgid "Privacy policy and terms of service"
msgstr ""
-#: lib/lanttern_web/live/shared/menu_component.ex:191
+#: lib/lanttern_web/live/shared/menu_component.ex:194
#, elixir-autogen, elixir-format
msgid "Terms of service"
msgstr ""
@@ -2103,7 +2111,7 @@ msgstr ""
msgid "to this report card"
msgstr ""
-#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:77
+#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:80
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
@@ -2224,7 +2232,7 @@ msgstr ""
msgid "Students report cards access updated"
msgstr ""
-#: lib/lanttern_web/components/reporting_components.ex:82
+#: lib/lanttern_web/components/reporting_components.ex:120
#, elixir-autogen, elixir-format
msgid "Under development"
msgstr ""
@@ -2234,12 +2242,7 @@ msgstr ""
msgid "Add a moment note"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:34
-#, elixir-autogen, elixir-format
-msgid "Add note"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:8
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "All cycles"
msgstr ""
@@ -2266,28 +2269,23 @@ msgstr ""
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:23
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:23
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:23
#, elixir-autogen, elixir-format, fuzzy
msgid "My strand notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:60
-#, elixir-autogen, elixir-format, fuzzy
-msgid "No notes for this strand yet"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:14
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "No strands related to selected cycles"
msgstr ""
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:29
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:29
#, elixir-autogen, elixir-format
msgid "No student notes for this strand"
msgstr ""
#: lib/lanttern_web/live/pages/strands/id/strand_live.html.heex:49
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:59
-#: lib/lanttern_web/live/shared/menu_component.ex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Notes"
msgstr ""
@@ -2297,26 +2295,18 @@ msgstr ""
msgid "Select classes to view student notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:77
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:77
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:60
#, elixir-autogen, elixir-format, fuzzy
msgid "Student notes"
msgstr ""
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:24
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "Student strand notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:77
-#, elixir-autogen, elixir-format
-msgid "View note in report card context"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:34
-#, elixir-autogen, elixir-format
-msgid "View/edit note"
-msgstr ""
-
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:58
#, elixir-autogen, elixir-format
msgid "students strand notes"
@@ -2327,11 +2317,6 @@ msgstr ""
msgid "to view students strand notes"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:98
-#, elixir-autogen, elixir-format, fuzzy
-msgid "under development"
-msgstr ""
-
#: lib/lanttern_web/live/shared/notes/note_component.ex:88
#, elixir-autogen, elixir-format
msgid "updated"
@@ -2388,13 +2373,8 @@ msgstr ""
msgid "Links should start with \"https://\" or \"http://\""
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:2
-#, elixir-autogen, elixir-format, fuzzy
-msgid "My strands notes"
-msgstr ""
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:71
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:42
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:42
#, elixir-autogen, elixir-format
msgid "Note's attachments"
msgstr ""
@@ -2409,11 +2389,6 @@ msgstr ""
msgid "Or add a link to an external file"
msgstr ""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:47
-#, elixir-autogen, elixir-format, fuzzy
-msgid "Strand note"
-msgstr ""
-
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:79
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:111
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:187
@@ -2451,15 +2426,15 @@ msgstr ""
msgid "%{student} comment"
msgstr ""
-#: lib/lanttern_web/components/assessments_components.ex:123
+#: lib/lanttern_web/components/assessments_components.ex:141
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:45
#, elixir-autogen, elixir-format
msgid "Student self-assessment"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:143
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:39
+#: lib/lanttern_web/components/reporting_components.ex:36
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:224
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:207
#, elixir-autogen, elixir-format, fuzzy
msgid "Teacher comment"
msgstr ""
@@ -2641,7 +2616,7 @@ msgstr ""
msgid "Strand assessment"
msgstr ""
-#: lib/lanttern_web/components/assessments_components.ex:120
+#: lib/lanttern_web/components/assessments_components.ex:138
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:42
#, elixir-autogen, elixir-format, fuzzy
msgid "Teacher assessment"
@@ -2688,85 +2663,111 @@ msgstr ""
msgid "Strand removed from your starred list"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:153
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:217
#, elixir-autogen, elixir-format, fuzzy
msgid "Assessment info"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:59
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Assessment rubric"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:59
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Assessment scale"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:24
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:66
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:69
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:68
#, elixir-autogen, elixir-format, fuzzy
msgid "Criteria:"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:73
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "Formative assessment"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:83
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:39
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:160
#, elixir-autogen, elixir-format
msgid "Formative assessment pattern"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:157
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:221
#, elixir-autogen, elixir-format, fuzzy
msgid "Has rubric"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:19
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:33
#, elixir-autogen, elixir-format
msgid "Here you'll find information about the strand final and formative assessments."
msgstr ""
#: lib/lanttern_web/components/assessments_components.ex:67
-#: lib/lanttern_web/components/assessments_components.ex:188
+#: lib/lanttern_web/components/assessments_components.ex:206
#, elixir-autogen, elixir-format
msgid "No entry"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:148
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:50
+#: lib/lanttern_web/components/reporting_components.ex:40
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:212
#, elixir-autogen, elixir-format, fuzzy
msgid "Student comment"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:17
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:30
#, elixir-autogen, elixir-format, fuzzy
msgid "Here you'll find information about the strand learning journey."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:61
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:72
#, elixir-autogen, elixir-format, fuzzy
msgid "No moments registered for this strand"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:38
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:32
#, elixir-autogen, elixir-format, fuzzy
msgid "No strand report info yet."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:16
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Strand rubrics"
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:24
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:38
#, elixir-autogen, elixir-format, fuzzy
msgid "You can click the assessment card to view more details about it."
msgstr ""
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:20
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:33
#, elixir-autogen, elixir-format
msgid "You can click the moment card to view more details about it, including information about formative assessment."
msgstr ""
+
+#: lib/lanttern_web/components/assessments_components.ex:104
+#, elixir-autogen, elixir-format
+msgid "Final assessment not available yet"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:31
+#, elixir-autogen, elixir-format, fuzzy
+msgid "Goals assessment entries"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:54
+#, elixir-autogen, elixir-format, fuzzy
+msgid "Goals without assessment entries"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:49
+#, elixir-autogen, elixir-format, fuzzy
+msgid "No assessment entries for this strand yet"
+msgstr ""
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:61
+#, elixir-autogen, elixir-format, fuzzy
+msgid "Rubric differentiation"
+msgstr ""
diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po
index f0ec6580..e437ed0d 100644
--- a/priv/gettext/pt_BR/LC_MESSAGES/default.po
+++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po
@@ -47,7 +47,11 @@ msgstr "Escola"
#: lib/lanttern_web/live/pages/strands/moment/id/moment_live.html.heex:9
#: lib/lanttern_web/live/pages/strands/strands_live.ex:52
#: lib/lanttern_web/live/pages/strands/strands_live.html.heex:2
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:10
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:2
#: lib/lanttern_web/live/shared/menu_component.ex:37
+#: lib/lanttern_web/live/shared/menu_component.ex:64
+#: lib/lanttern_web/live/shared/menu_component.ex:76
#, elixir-autogen, elixir-format
msgid "Strands"
msgstr "Trilhas"
@@ -59,23 +63,23 @@ msgstr "Trilhas"
msgid "close"
msgstr "fechar"
-#: lib/lanttern_web/live/shared/menu_component.ex:115
+#: lib/lanttern_web/live/shared/menu_component.ex:118
#, elixir-autogen, elixir-format
msgid "Change profile"
msgstr "Alterar perfil"
-#: lib/lanttern_web/live/shared/menu_component.ex:152
+#: lib/lanttern_web/live/shared/menu_component.ex:155
#, elixir-autogen, elixir-format
msgid "Language:"
msgstr "Idioma:"
#: lib/lanttern_web/controllers/privacy_policy_html/accept_policy.html.heex:25
-#: lib/lanttern_web/live/shared/menu_component.ex:145
+#: lib/lanttern_web/live/shared/menu_component.ex:148
#, elixir-autogen, elixir-format
msgid "Log out"
msgstr "Sair"
-#: lib/lanttern_web/live/shared/menu_component.ex:87
+#: lib/lanttern_web/live/shared/menu_component.ex:90
#, elixir-autogen, elixir-format
msgid "You're logged in as"
msgstr "Você está acessando como"
@@ -86,7 +90,7 @@ msgid "All strands"
msgstr "Todas as trilhas"
#: lib/lanttern_web/live/shared/filters/filters_overlay_component.ex:33
-#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:32
+#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:33
#, elixir-autogen, elixir-format
msgid "Apply filters"
msgstr "Aplicar filtros"
@@ -371,7 +375,8 @@ msgid "About"
msgstr "Sobre"
#: lib/lanttern_web/components/grades_reports_components.ex:604
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:61
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:61
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:48
#, elixir-autogen, elixir-format
msgid "Assessment"
msgstr "Avaliação"
@@ -421,8 +426,8 @@ msgid "Strand deleted"
msgstr "Trilha deletada"
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:25
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:61
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:31
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:31
#, elixir-autogen, elixir-format
msgid "Add a strand note"
msgstr "Adicionar uma anotação da trilha"
@@ -479,10 +484,10 @@ msgstr "Deletar anotação"
#: lib/lanttern_web/live/pages/strands/id/about_component.ex:54
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:74
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:117
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:62
#: lib/lanttern_web/live/shared/assessments/assessment_point_form_component.ex:84
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:28
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:65
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:181
#, elixir-autogen, elixir-format
msgid "Differentiation"
msgstr "Diferenciação"
@@ -584,6 +589,7 @@ msgstr "Visualizando"
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:24
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:28
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:28
#, elixir-autogen, elixir-format
msgid "You don't have any notes for this strand yet"
msgstr "Você ainda não poussui anotações para esta trilha"
@@ -757,7 +763,7 @@ msgstr "Este ponto de avaliação já possui alguns registros. Deletá-lo irá c
msgid "to assess students"
msgstr "para avaliar estudantes"
-#: lib/lanttern/learning_context/strand.ex:90
+#: lib/lanttern/learning_context/strand.ex:95
#, elixir-autogen, elixir-format
msgid "Strand has linked assessment points."
msgstr "Trilha possui pontos de avaliação conectados."
@@ -830,7 +836,8 @@ msgid "Moment updated successfully"
msgstr "Momento atualizado com sucesso"
#: lib/lanttern_web/live/pages/strands/id/strand_live.html.heex:43
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:69
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:69
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:54
#, elixir-autogen, elixir-format
msgid "Moments"
msgstr "Momentos"
@@ -855,7 +862,7 @@ msgstr "Nenhum momento para esta trilha ainda"
msgid "Save moment"
msgstr "Salvar momento"
-#: lib/lanttern/learning_context.ex:443
+#: lib/lanttern/learning_context.ex:531
#: lib/lanttern/repo_helpers.ex:122
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:53
#: lib/lanttern_web/live/pages/report_cards/id/students_grades_component.ex:283
@@ -880,12 +887,13 @@ msgstr "Ordem dos Momentos da Trilha"
msgid "Strand has linked moments and/or assessment points (goals). Deleting it would cause some data loss."
msgstr "Trilha com momentos e/ou pontos de avaliação (objetivos) conectados. Deletá-la causaria perda de dados."
-#: lib/lanttern/learning_context/strand.ex:85
+#: lib/lanttern/learning_context/strand.ex:90
#, elixir-autogen, elixir-format
msgid "Strand has linked moments."
msgstr "Trilha possui momentos conectados."
#: lib/lanttern_web/live/pages/strands/id/moments_component.ex:19
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:28
#, elixir-autogen, elixir-format
msgid "Strand moments"
msgstr "Momentos da trilha"
@@ -1067,7 +1075,8 @@ msgstr "Componente curricular"
msgid "Curriculum components"
msgstr "Componentes curriculares"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:28
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:39
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:60
#, elixir-autogen, elixir-format
msgid "Curriculum differentiation"
msgstr "Diferenciação curricular"
@@ -1082,12 +1091,13 @@ msgstr "Item curricular removido"
msgid "Curriculum items"
msgstr "Itens curriculares"
-#: lib/lanttern_web/components/reporting_components.ex:70
+#: lib/lanttern_web/components/reporting_components.ex:108
#: lib/lanttern_web/live/pages/grading/grades_reports_live.html.heex:39
#: lib/lanttern_web/live/pages/report_cards/id/report_card_live.html.heex:14
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:34
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:34
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:23
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:107
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:25
#: lib/lanttern_web/live/shared/reporting/report_card_form_component.ex:37
#, elixir-autogen, elixir-format
msgid "Cycle"
@@ -1099,7 +1109,7 @@ msgstr "Ciclo"
msgid "Cycle already added to this grade report"
msgstr "Ciclo já adicionado à este relatório de nota"
-#: lib/lanttern_web/components/reporting_components.ex:266
+#: lib/lanttern_web/components/reporting_components.ex:306
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:27
#: lib/lanttern_web/live/pages/strands/id/strand_rubrics_component.ex:106
#: lib/lanttern_web/live/shared/assessments/assessments_grid_component.ex:353
@@ -1463,7 +1473,8 @@ msgid "Normalized value"
msgstr "Valor normalizado"
#: lib/lanttern_web/live/pages/strands/moment/id/moment_live.html.heex:40
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:53
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:53
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:42
#, elixir-autogen, elixir-format
msgid "Overview"
msgstr "Visão geral"
@@ -1519,6 +1530,8 @@ msgstr "Id do report card"
#: lib/lanttern_web/live/pages/report_cards/report_cards_live.ex:29
#: lib/lanttern_web/live/pages/strands/id/about_component.ex:112
#: lib/lanttern_web/live/shared/menu_component.ex:49
+#: lib/lanttern_web/live/shared/menu_component.ex:61
+#: lib/lanttern_web/live/shared/menu_component.ex:73
#, elixir-autogen, elixir-format
msgid "Report cards"
msgstr "Report cards"
@@ -1614,7 +1627,8 @@ msgstr "Objetivo da Trilha"
msgid "Strand id"
msgstr "Id da trilha"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:12
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:12
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:12
#, elixir-autogen, elixir-format
msgid "Strand report"
msgstr "Relatório da trilha"
@@ -1654,7 +1668,7 @@ msgstr "Registro de relatório de nota de estudante atualizado com sucesso"
msgid "Student grades calculated succesfully"
msgstr "Notas do estudantes calculadas com sucesso"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:10
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:10
#: lib/lanttern_web/live/pages/student_report_card/id/student_report_card_live.html.heex:5
#, elixir-autogen, elixir-format
msgid "Student report card"
@@ -1802,12 +1816,6 @@ msgstr "Filtrar trilhas por ano"
msgid "%{student}'s report cards"
msgstr "Report cards de %{student}"
-#: lib/lanttern_web/live/shared/menu_component.ex:61
-#: lib/lanttern_web/live/shared/menu_component.ex:73
-#, elixir-autogen, elixir-format
-msgid "Home"
-msgstr "Início"
-
#: lib/lanttern_web/controllers/error_html/500.html.heex:32
#, elixir-autogen, elixir-format
msgid "Internal server error"
@@ -1835,13 +1843,13 @@ msgstr "Detalhes da trilha"
msgid "Welcome!"
msgstr "Bem-vinda!"
-#: lib/lanttern_web/user_auth.ex:282
-#: lib/lanttern_web/user_auth.ex:318
+#: lib/lanttern_web/user_auth.ex:288
+#: lib/lanttern_web/user_auth.ex:345
#, elixir-autogen, elixir-format
msgid "You must log in to access this page."
msgstr "Você precisa estar logado para acessar esta página."
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:97
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:104
#, elixir-autogen, elixir-format
msgid "About this assessment"
msgstr "Sobre esta avaliação"
@@ -2006,7 +2014,7 @@ msgstr "Confirmar"
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:11
#: lib/lanttern_web/controllers/privacy_policy_controller.ex:48
-#: lib/lanttern_web/live/shared/menu_component.ex:183
+#: lib/lanttern_web/live/shared/menu_component.ex:186
#, elixir-autogen, elixir-format
msgid "Privacy policy"
msgstr "Política de privacidade"
@@ -2048,7 +2056,7 @@ msgstr "Ao utilizar o Lanttern, você confirma ter lido e estar de acordo com no
msgid "Privacy policy and terms of service"
msgstr "Política de privacidade e termos de uso"
-#: lib/lanttern_web/live/shared/menu_component.ex:191
+#: lib/lanttern_web/live/shared/menu_component.ex:194
#, elixir-autogen, elixir-format
msgid "Terms of service"
msgstr "Termos de uso"
@@ -2103,7 +2111,7 @@ msgstr "para listar estudantes"
msgid "to this report card"
msgstr "a este report card"
-#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:77
+#: lib/lanttern_web/live/shared/filters/inline_filters_component.ex:80
#, elixir-autogen, elixir-format
msgid "All"
msgstr "Tudo"
@@ -2224,7 +2232,7 @@ msgstr "Acesso de estudantes"
msgid "Students report cards access updated"
msgstr "Report cards de estudante atualizados"
-#: lib/lanttern_web/components/reporting_components.ex:82
+#: lib/lanttern_web/components/reporting_components.ex:120
#, elixir-autogen, elixir-format
msgid "Under development"
msgstr "Em desenvolvimento"
@@ -2234,12 +2242,7 @@ msgstr "Em desenvolvimento"
msgid "Add a moment note"
msgstr "Adicionar anotações sobre o momento"
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:34
-#, elixir-autogen, elixir-format
-msgid "Add note"
-msgstr "Adicionar anotações"
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:8
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:8
#, elixir-autogen, elixir-format
msgid "All cycles"
msgstr "Todos os ciclos"
@@ -2266,28 +2269,23 @@ msgstr "Meus report cards"
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:23
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:23
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:23
#, elixir-autogen, elixir-format
msgid "My strand notes"
msgstr "Minhas anotações sobre a trilha"
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:60
-#, elixir-autogen, elixir-format
-msgid "No notes for this strand yet"
-msgstr "Nenhuma anotação sobre esta trilha ainda"
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:14
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:16
#, elixir-autogen, elixir-format
msgid "No strands related to selected cycles"
msgstr "Nenhuma trilha relacionada aos ciclos selecionados"
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:29
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:29
#, elixir-autogen, elixir-format
msgid "No student notes for this strand"
msgstr "Nenhuma anotação de estudante sobre esta trilha"
#: lib/lanttern_web/live/pages/strands/id/strand_live.html.heex:49
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:59
-#: lib/lanttern_web/live/shared/menu_component.ex:64
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr "Anotações"
@@ -2297,25 +2295,17 @@ msgstr "Anotações"
msgid "Select classes to view student notes"
msgstr "Selecione uma turma para visualizar anotações dos estudantes"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_strand_report_live.html.heex:77
+#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_report_card_strand_report_live.html.heex:77
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_strand_report_live.html.heex:60
#, elixir-autogen, elixir-format
msgid "Student notes"
-msgstr "Anotações de estudantes"
+msgstr "Anotações do estudante"
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:24
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:24
#, elixir-autogen, elixir-format
msgid "Student strand notes"
-msgstr "Anotações de estudantes sobre a trilha"
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:77
-#, elixir-autogen, elixir-format
-msgid "View note in report card context"
-msgstr "Ver anotação no contexto do report card"
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:34
-#, elixir-autogen, elixir-format
-msgid "View/edit note"
-msgstr "Ver/editar anotação"
+msgstr "Anotações do estudante sobre a trilha"
#: lib/lanttern_web/live/pages/strands/id/notes_component.ex:58
#, elixir-autogen, elixir-format
@@ -2327,11 +2317,6 @@ msgstr "anotações de estudantes sobre a trillha"
msgid "to view students strand notes"
msgstr "para visualizar anotações de estudantes sobre a trilha"
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:98
-#, elixir-autogen, elixir-format
-msgid "under development"
-msgstr "em desenvolvimento"
-
#: lib/lanttern_web/live/shared/notes/note_component.ex:88
#, elixir-autogen, elixir-format
msgid "updated"
@@ -2388,13 +2373,8 @@ msgstr "Formato do link inválido"
msgid "Links should start with \"https://\" or \"http://\""
msgstr "Links precisam começar com \"https://\" ou \"http://\""
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:2
-#, elixir-autogen, elixir-format
-msgid "My strands notes"
-msgstr "Minhas anotações sobre as trilhas"
-
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:71
#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/student_notes_component.ex:42
+#: lib/lanttern_web/live/pages/student_strand_report/id/student_notes_component.ex:42
#, elixir-autogen, elixir-format
msgid "Note's attachments"
msgstr "Anexos da anotação"
@@ -2409,11 +2389,6 @@ msgstr "Apenas arquivos do tipo %{formats} são aceitos"
msgid "Or add a link to an external file"
msgstr "Ou adicione um link para um arquivo externo"
-#: lib/lanttern_web/live/pages/student notes/student_notes_live.html.heex:47
-#, elixir-autogen, elixir-format
-msgid "Strand note"
-msgstr "Anotação sobre a trilha"
-
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:79
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:111
#: lib/lanttern_web/live/shared/attachments/attachment_area_component.ex:187
@@ -2451,15 +2426,15 @@ msgstr "Professor"
msgid "%{student} comment"
msgstr "Comentário de %{student}"
-#: lib/lanttern_web/components/assessments_components.ex:123
+#: lib/lanttern_web/components/assessments_components.ex:141
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:45
#, elixir-autogen, elixir-format
msgid "Student self-assessment"
msgstr "Autoavaliação do estudante"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:143
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:39
+#: lib/lanttern_web/components/reporting_components.ex:36
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:224
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:207
#, elixir-autogen, elixir-format
msgid "Teacher comment"
msgstr "Comentário do professor"
@@ -2641,7 +2616,7 @@ msgstr "Mostrar somente avaliações dos objetivos"
msgid "Strand assessment"
msgstr "Avaliação da trilha"
-#: lib/lanttern_web/components/assessments_components.ex:120
+#: lib/lanttern_web/components/assessments_components.ex:138
#: lib/lanttern_web/live/shared/assessments/entry_details_component.ex:42
#, elixir-autogen, elixir-format
msgid "Teacher assessment"
@@ -2688,85 +2663,111 @@ msgstr "Nenhuma trilha favoritada ainda"
msgid "Strand removed from your starred list"
msgstr "Trilha removida da sua lista de favoritas"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:153
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:217
#, elixir-autogen, elixir-format
msgid "Assessment info"
msgstr "Informações da avaliação"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:59
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:62
#, elixir-autogen, elixir-format
msgid "Assessment rubric"
msgstr "Rubrica de avaliação"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:59
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:62
#, elixir-autogen, elixir-format
msgid "Assessment scale"
msgstr "Escala da avaliação"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:24
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:66
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:69
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:68
#, elixir-autogen, elixir-format
msgid "Criteria:"
msgstr "Critério:"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:73
+#: lib/lanttern_web/live/shared/assessments/strand_goal_details_overlay_component.ex:80
#, elixir-autogen, elixir-format
msgid "Formative assessment"
msgstr "Avaliação formativa"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:83
+#: lib/lanttern_web/live/pages/student_strands/student_strands_live.html.heex:39
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:160
#, elixir-autogen, elixir-format
msgid "Formative assessment pattern"
msgstr "Padrão da avaliação formativa"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:157
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:221
#, elixir-autogen, elixir-format
msgid "Has rubric"
msgstr "Possui rubrica"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:19
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:33
#, elixir-autogen, elixir-format
msgid "Here you'll find information about the strand final and formative assessments."
msgstr "Aqui você irá encontrar informações sobre as avaliações final e formativa da trilha."
#: lib/lanttern_web/components/assessments_components.ex:67
-#: lib/lanttern_web/components/assessments_components.ex:188
+#: lib/lanttern_web/components/assessments_components.ex:206
#, elixir-autogen, elixir-format
msgid "No entry"
msgstr "Sem registro"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:148
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/strand_goal_details_component.ex:50
+#: lib/lanttern_web/components/reporting_components.ex:40
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:212
#, elixir-autogen, elixir-format
msgid "Student comment"
msgstr "Comentário do estudante"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:17
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:30
#, elixir-autogen, elixir-format
msgid "Here you'll find information about the strand learning journey."
msgstr "Aqui você irá encontrar informações sobre a jornada de aprendizagem da trilha."
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:61
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:72
#, elixir-autogen, elixir-format
msgid "No moments registered for this strand"
msgstr "Nenhum momento registrado nesta trilha"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:38
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:32
#, elixir-autogen, elixir-format
msgid "No strand report info yet."
msgstr "Nenhuma informação do relatório ainda."
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/overview_component.ex:16
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:27
#, elixir-autogen, elixir-format
msgid "Strand rubrics"
msgstr "Rubricas da trilha"
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/assessment_component.ex:24
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:38
#, elixir-autogen, elixir-format
msgid "You can click the assessment card to view more details about it."
msgstr "Você pode clicar no card da avaliação para ver mais detalhes."
-#: lib/lanttern_web/live/pages/student_report_card/id/strand_report/strand_report_id/moments_component.ex:20
+#: lib/lanttern_web/live/shared/reporting/strand_report_moments_component.ex:33
#, elixir-autogen, elixir-format
msgid "You can click the moment card to view more details about it, including information about formative assessment."
-msgstr "Você pode clicar no card do momento para ver mais detalhes sobre, incluindo informações sobre avaliação formativa."
+msgstr "Você pode clicar no card do momento para ver mais detalhes, incluindo informações sobre avaliação formativa."
+
+#: lib/lanttern_web/components/assessments_components.ex:104
+#, elixir-autogen, elixir-format
+msgid "Final assessment not available yet"
+msgstr "A avaliação final ainda não está disponível"
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:31
+#, elixir-autogen, elixir-format
+msgid "Goals assessment entries"
+msgstr "Registros da avaliação de objetivos"
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:54
+#, elixir-autogen, elixir-format
+msgid "Goals without assessment entries"
+msgstr "Objetivos sem registros de avaliação"
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_assessment_component.ex:49
+#, elixir-autogen, elixir-format
+msgid "No assessment entries for this strand yet"
+msgstr "Nenhum registro de avaliação para esta trilha ainda"
+
+#: lib/lanttern_web/live/shared/reporting/strand_report_overview_component.ex:61
+#, elixir-autogen, elixir-format
+msgid "Rubric differentiation"
+msgstr "Rubrica de diferenciação"