diff --git a/config/config.exs b/config/config.exs
index 93216f60..eca12f75 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -31,6 +31,8 @@ config :vyasa, VyasaWeb.Endpoint,
# at the `config/runtime.exs`.
config :vyasa, Vyasa.Mailer, adapter: Swoosh.Adapters.Local
+config :live_admin, ecto_repo: Vyasa.Repo
+
# Configure esbuild (the version is required)
config :esbuild,
version: "0.17.11",
diff --git a/docs/initial_db_helpers.livemd b/docs/initial_db_helpers.livemd
index 3acb30d2..f2fb70af 100644
--- a/docs/initial_db_helpers.livemd
+++ b/docs/initial_db_helpers.livemd
@@ -362,7 +362,7 @@ events =
Shloka 30:- 07:13
Shloka 31:- 07:26
Shloka 32 :- 07:38
- Shloka 33:- 07:52
+ Shloka 33:- 07:51
Shloka 34 :- 08:05
Shloka 35 :- 08:18
Shloka 36 :- 08:31
diff --git a/lib/vyasa/medium.ex b/lib/vyasa/medium.ex
index d3c0f373..7e27e4dd 100644
--- a/lib/vyasa/medium.ex
+++ b/lib/vyasa/medium.ex
@@ -113,6 +113,16 @@ defmodule Vyasa.Medium do
"""
def get_event!(id), do: Repo.get!(Event, id)
+ def get_event_by_order!(%Event{origin: origin, voice_id: v_id}, order) do
+ #TODO merge Sangh Filters to fix -1 order case for origin backwards operators
+ (from e in Event,
+ preload: [:voice, :verse],
+ where: e.origin >= ^origin and e.voice_id == ^v_id,
+ order_by: e.origin,
+ offset: ^order,
+ limit: 1)
+ |> Repo.one!()
+ end
@doc """
Creates a event.
diff --git a/lib/vyasa/medium/event.ex b/lib/vyasa/medium/event.ex
index 8e9822b2..dbd35628 100644
--- a/lib/vyasa/medium/event.ex
+++ b/lib/vyasa/medium/event.ex
@@ -1,6 +1,5 @@
defmodule Vyasa.Medium.Event do
use Ecto.Schema
-
import Ecto.Changeset
alias Vyasa.Written.{Verse, Source}
diff --git a/lib/vyasa/written.ex b/lib/vyasa/written.ex
index 07004dab..1c59dbb1 100644
--- a/lib/vyasa/written.ex
+++ b/lib/vyasa/written.ex
@@ -144,6 +144,7 @@ defmodule Vyasa.Written do
|> Repo.preload([:verses, :translations])
chapter.verses
+
end
@doc """
diff --git a/lib/vyasa_web.ex b/lib/vyasa_web.ex
index d52574a6..ebecf936 100644
--- a/lib/vyasa_web.ex
+++ b/lib/vyasa_web.ex
@@ -27,6 +27,9 @@ defmodule VyasaWeb do
import Plug.Conn
import Phoenix.Controller
import Phoenix.LiveView.Router
+
+ # Import Admin Routes
+ import LiveAdmin.Router
end
end
diff --git a/lib/vyasa_web/admin.ex b/lib/vyasa_web/admin.ex
new file mode 100644
index 00000000..5941f69a
--- /dev/null
+++ b/lib/vyasa_web/admin.ex
@@ -0,0 +1,79 @@
+defmodule VyasaWeb.Admin.Written.Verse do
+ use LiveAdmin.Resource, schema: Vyasa.Written.Verse
+end
+
+defmodule VyasaWeb.Admin.Medium.Event do
+ use LiveAdmin.Resource, schema: Vyasa.Medium.Event,
+ immutable_fields: [:source_id],
+ actions: [:silence, :next, :prev],
+ render_with: :render_field
+
+
+
+ def render_field(record, field, session) do
+ VyasaWeb.Admin.Renderer.render_field(record, field, session)
+ end
+
+
+ def silence(%{voice: _v} = e, _sess) do
+ e = %{e | voice: nil}
+ {:ok, e}
+ end
+
+ def next(%{voice: _v} = e, _sess) do
+ {:ok, Vyasa.Medium.get_event_by_order!(e, 1)}
+ end
+
+ def prev(%{voice: _v} = e, _sess) do
+ {:ok, Vyasa.Medium.get_event_by_order!(e, -1)}
+ end
+end
+
+
+defmodule VyasaWeb.Admin.Renderer do
+ use Phoenix.Component
+
+ def render_field(%{origin: o, voice: %Vyasa.Medium.Voice{} = v} = assigns, :phase, _session) do
+ assigns = %{assigns | origin: floor(o/1000), voice: Vyasa.Medium.Store.hydrate(v)}
+ ~H"""
+ <%= @phase %>
+
+ """
+ end
+
+ def render_field(%{verse: %Vyasa.Written.Verse{} = v} = assigns, :verse_id, _session) do
+ assigns = %{assigns | verse: v |> Vyasa.Repo.preload(:translations)}
+ ~H"""
+
+ <%= @verse.body %>
+
+
+ <%= List.first(@verse.translations).target.body_translit %>
+
+ """
+ end
+
+
+ def render_field(record, field, _session) do
+ IO.inspect(field)
+ record
+ |> Map.fetch!(field)
+ |> case do
+ bool when is_boolean(bool) ->
+ if bool, do: "Yes", else: "No"
+ date = %Date{} ->
+ Calendar.strftime(date, "%a, %B %d %Y")
+ bin when is_binary(bin) -> bin
+ _ ->
+ record
+ |> Map.fetch!(field)
+ |> case do
+ val when is_binary(val) -> val
+ val -> inspect(val, pretty: true)
+ end
+ end
+ end
+
+end
diff --git a/lib/vyasa_web/router.ex b/lib/vyasa_web/router.ex
index 28b56f75..12d6eead 100644
--- a/lib/vyasa_web/router.ex
+++ b/lib/vyasa_web/router.ex
@@ -1,6 +1,7 @@
defmodule VyasaWeb.Router do
use VyasaWeb, :router
+
pipeline :browser do
plug :accepts, ["html"]
plug CORSPlug, origin: ["https://www.youtube.com/iframe_api"]
@@ -33,6 +34,12 @@ defmodule VyasaWeb.Router do
live "/explore/:source_title/:chap_no", SourceLive.Chapter.Index, :index
live "/explore/:source_title/:chap_no/:verse_no", SourceLive.Chapter.ShowVerse, :show
end
+
+ live_admin "/admin" do
+ admin_resource "/verses", VyasaWeb.Admin.Written.Verse
+ admin_resource "/events", VyasaWeb.Admin.Medium.Event
+ end
+
end
# Other scopes may use custom stacks.
diff --git a/mix.exs b/mix.exs
index f2d4e843..1089a14a 100644
--- a/mix.exs
+++ b/mix.exs
@@ -65,8 +65,9 @@ defmodule Vyasa.MixProject do
{:kino, "~> 0.12.0"},
{:cors_plug, "~> 3.0"},
{:ex_aws, "~> 2.0"},
- {:req, "~> 0.4.0"},
- {:ex_aws_s3, "~> 2.5"}
+ {:ex_aws_s3, "~> 2.5"},
+ {:live_admin, "~> 0.11.4"},
+ {:req, "~> 0.4.0"}
]
end
diff --git a/mix.lock b/mix.lock
index f5578ec4..c5285d43 100644
--- a/mix.lock
+++ b/mix.lock
@@ -28,6 +28,7 @@
"image": {:hex, :image, "0.39.0", "c003ce095ee32c40f194ca1a48ffa6d3e67192e567183e70dfd8b77bb7144119", [:mix], [{:bumblebee, "~> 0.3", [hex: :bumblebee, repo: "hexpm", optional: true]}, {:evision, "~> 0.1.33", [hex: :evision, repo: "hexpm", optional: true]}, {:exla, "~> 0.5", [hex: :exla, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:kino, "~> 0.7", [hex: :kino, repo: "hexpm", optional: true]}, {:nx, "~> 0.5", [hex: :nx, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.14 or ~> 3.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: true]}, {:rustler, "> 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}, {:vix, "~> 0.23", [hex: :vix, repo: "hexpm", optional: false]}], "hexpm", "d83de26e009a59cb8c53d2efecaacd7c9b990897dc3c7095a5b8847e73c8f968"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"kino": {:hex, :kino, "0.12.0", "dfebe415f31cf2f54d98600178c08fd017931d9dada6fb59b7716b5431bee4a1", [:mix], [{:fss, "~> 0.1.0", [hex: :fss, repo: "hexpm", optional: false]}, {:nx, "~> 0.1", [hex: :nx, repo: "hexpm", optional: true]}, {:table, "~> 0.1.2", [hex: :table, repo: "hexpm", optional: false]}], "hexpm", "6796a64ae978fc2e50e52cae022ae6a3d28b8e50589af158b8f3904e7f748377"},
+ "live_admin": {:hex, :live_admin, "0.11.4", "d4e964ac99d215305d2d9f4af941a334d8e8edd19c53d589ebf3d53b7f079fea", [:mix], [{:ecto, "~> 3.10", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:gettext, "~> 0.22", [hex: :gettext, repo: "hexpm", optional: false]}, {:phoenix_ecto, "~> 4.4", [hex: :phoenix_ecto, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.20.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}], "hexpm", "c09ae7669b6b6e85bb03af19436c035aaf01e49f4ef7966d0e0c994c651252c9"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
@@ -43,6 +44,7 @@
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.1", "92a37acf07afca67ac98bd326532ba8f44ad7d4bdf3e4361b03f7f02594e5ae9", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "be494fd1215052729298b0e97d5c2ce8e719c00854b82cd8cf15c1cd7fcf6294"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"},
+ "phoenix_view": {:hex, :phoenix_view, "2.0.3", "4d32c4817fce933693741deeb99ef1392619f942633dde834a5163124813aad3", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64"},
"plug": {:hex, :plug, "1.15.1", "b7efd81c1a1286f13efb3f769de343236bd8b7d23b4a9f40d3002fc39ad8f74c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "459497bd94d041d98d948054ec6c0b76feacd28eec38b219ca04c0de13c79d30"},
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
diff --git a/priv/static/corpus/gita/verse.json b/priv/static/corpus/gita/verse.json
index 7442434b..898db522 100644
--- a/priv/static/corpus/gita/verse.json
+++ b/priv/static/corpus/gita/verse.json
@@ -56,7 +56,7 @@
"title": "Verse 5",
"verse_number": 5,
"verse_order": 5,
- "transliteration": "dhṛiṣhṭaketuśhchekitānaḥ kāśhirājaśhcha vīryavān\npurujit kuntibhojaśhcha śhaibyaśhcha nara-puṅgavaḥ\nyudhāmanyuśhcha vikrānta uttamaujāśhcha vīryavān\n",
+ "transliteration": "dhṛiṣhṭaketuśhchekitānaḥ kāśhirājaśhcha vīryavān\npurujit kuntibhojaśhcha śhaibyaśhcha nara-puṅgavaḥ\n",
"word_meanings": "dhṛiṣhṭaketuḥ—Dhrishtaketu; chekitānaḥ—Chekitan; kāśhirājaḥ—Kashiraj; cha—and; vīrya-vān—heroic; purujit—Purujit; kuntibhojaḥ—Kuntibhoj; cha—and; śhaibyaḥ—Shaibya; cha—and; nara-puṅgavaḥ—best of men; yudhāmanyuḥ—Yudhamanyu; cha—and; vikrāntaḥ—courageous; uttamaujāḥ—Uttamauja; cha—and; vīrya-vān—gallant;\n"
},
{
@@ -68,7 +68,7 @@
"title": "Verse 6",
"verse_number": 6,
"verse_order": 6,
- "transliteration": "saubhadro draupadeyāśhcha sarva eva mahā-rathāḥ\n",
+ "transliteration": "yudhāmanyuśhcha vikrānta uttamaujāśhcha vīryavān\nsaubhadro draupadeyāśhcha sarva eva mahā-rathāḥ\n",
"word_meanings": "saubhadraḥ—the son of Subhadra; draupadeyāḥ—the sons of Draupadi; cha—and; sarve—all; eva—indeed; mahā-rathāḥ—warriors who could single handedly match the strength of ten thousand ordinary warriors\n"
},
{
@@ -232,24 +232,24 @@
"chapter_number": 1,
"externalId": 20,
"id": 20,
- "text": "अथ व्यवस्थितान् दृष्ट्वा धार्तराष्ट्रान्कपिध्वजः।\n\nप्रवृत्ते शस्त्रसंपाते धनुरुद्यम्य पाण्डवः।।1.20।।\n ",
+ "text": "अथ व्यवस्थितान् दृष्ट्वा धार्तराष्ट्रान्कपिध्वजः।\n\nप्रवृत्ते शस्त्रसंपाते धनुरुद्यम्य पाण्डवः।।1.20।।\n",
"title": "Verse 20",
"verse_number": 20,
"verse_order": 20,
- "transliteration": "atha vyavasthitān dṛiṣhṭvā dhārtarāṣhṭrān kapi-dhwajaḥ\npravṛitte śhastra-sampāte dhanurudyamya pāṇḍavaḥ\nhṛiṣhīkeśhaṁ tadā vākyam idam āha mahī-pate\n",
- "word_meanings": "atha—thereupon; vyavasthitān—arrayed; dṛiṣhṭvā—seeing; dhārtarāṣhṭrān—Dhritarashtra’s sons; kapi-dwajaḥ—the Monkey Bannered; pravṛitte—about to commence; śhastra-sampāte—to use the weapons; dhanuḥ—bow; udyamya—taking up; pāṇḍavaḥ—Arjun, the son of Pandu; hṛiṣhīkeśham—to Shree Krishna; tadā—at that time; vākyam—words; idam—these; āha—said; mahī-pate—King\n"
+ "transliteration": "atha vyavasthitān dṛiṣhṭvā dhārtarāṣhṭrān kapi-dhwajaḥ\npravṛitte śhastra-sampāte dhanurudyamya pāṇḍavaḥ\n",
+ "word_meanings": "atha—thereupon; vyavasthitān—arrayed; dṛiṣhṭvā—seeing; dhārtarāṣhṭrān—Dhritarashtra’s sons; kapi-dwajaḥ—the Monkey Bannered; pravṛitte—about to commence; śhastra-sampāte—to use the weapons; dhanuḥ—bow; udyamya—taking up; pāṇḍavaḥ—Arjun, the son of Pandu\n"
},
{
"chapter_id": 1,
"chapter_number": 1,
"externalId": 21,
"id": 21,
- "text": "अर्जुन उवाच\n\nहृषीकेशं तदा वाक्यमिदमाह महीपते।\n\nसेनयोरुभयोर्मध्ये रथं स्थापय मेऽच्युत।।1.21।।\n ",
+ "text": "हृषीकेशं तदा वाक्यमिदमाह महीपते अर्जुन उवाच\n\nसेनयोरुभयोर्मध्ये रथं स्थापय मेऽच्युत।।1.21।।\n ",
"title": "Verse 21",
"verse_number": 21,
"verse_order": 21,
- "transliteration": "arjuna uvācha\nsenayor ubhayor madhye rathaṁ sthāpaya me ’chyuta\n",
- "word_meanings": "arjunaḥ uvācha—Arjun said; senayoḥ—armies; ubhayoḥ—both; madhye—in the middle; ratham—chariot; sthāpaya—place; me—my; achyuta—Shree Krishna, the infallible One;\n"
+ "transliteration": "hṛiṣhīkeśhaṁ tadā vākyam idam āha mahī-pate\narjuna uvācha\nsenayor ubhayor madhye rathaṁ sthāpaya me ’chyuta\n",
+ "word_meanings": "hṛiṣhīkeśham—to Shree Krishna; tadā—at that time; vākyam—words; idam—these; āha—said; mahī-pate—Kingarjunaḥ uvācha—Arjun said; senayoḥ—armies; ubhayoḥ—both; madhye—in the middle; ratham—chariot; sthāpaya—place; me—my; achyuta—Shree Krishna, the infallible One;\n"
},
{
"chapter_id": 1,
@@ -304,12 +304,12 @@
"chapter_number": 1,
"externalId": 26,
"id": 26,
- "text": "तत्रापश्यत्स्थितान्पार्थः पितृ़नथ पितामहान्।\n\nआचार्यान्मातुलान्भ्रातृ़न्पुत्रान्पौत्रान्सखींस्तथा।।1.26।।\n ",
+ "text": "तत्रापश्य त्स्थितान् पार्थः पितृ़नथ पितामहान्।\n\nआचार्यान् मातुलान् भ्रातृ़न् पुत्रान् पौत्रान् सखींस् तथा।।1.26।।\n ",
"title": "Verse 26",
"verse_number": 26,
"verse_order": 26,
- "transliteration": "tatrāpaśhyat sthitān pārthaḥ pitṝīn atha pitāmahān\nāchāryān mātulān bhrātṝīn putrān pautrān sakhīṁs tathā\nśhvaśhurān suhṛidaśh chaiva senayor ubhayor api\n",
- "word_meanings": "tatra—there; apaśhyat—saw; sthitān—stationed; pārthaḥ—Arjun; pitṝīn—fathers; atha—thereafter; pitāmahān—grandfathers; āchāryān—teachers; mātulān—maternal uncles; bhrātṝīn—brothers; putrān—sons; pautrān—grandsons; sakhīn—friends; tathā—also; śhvaśhurān—fathers-in-law; suhṛidaḥ—well-wishers; cha—and; eva—indeed; senayoḥ—armies; ubhayoḥ—in both armies; api—also\n"
+ "transliteration": "tatrāpaśhyat sthitān pārthaḥ pitṝīn atha pitāmahān\nāchāryān mātulān bhrātṝīn putrān pautrān sakhīṁs tathā\n",
+ "word_meanings": "tatra—there; apaśhyat—saw; sthitān—stationed; pārthaḥ—Arjun; pitṝīn—fathers; atha—thereafter; pitāmahān—grandfathers; āchāryān—teachers; mātulān—maternal uncles; bhrātṝīn—brothers; putrān—sons; pautrān—grandsons; sakhīn—friends; tathā—likewise\n"
},
{
"chapter_id": 1,
@@ -320,20 +320,20 @@
"title": "Verse 27",
"verse_number": 27,
"verse_order": 27,
- "transliteration": "tān samīkṣhya sa kaunteyaḥ sarvān bandhūn avasthitān\nkṛipayā parayāviṣhṭo viṣhīdann idam abravīt\n",
- "word_meanings": "tān—these; samīkṣhya—on seeing; saḥ—they; kaunteyaḥ—Arjun, the son of Kunti; sarvān—all; bandhūn—relatives; avasthitān—present; kṛipayā—by compassion; parayā—great; āviṣhṭaḥ—overwhelmed; viṣhīdan—deep sorrow; idam—this; abravīt—spoke\n"
+ "transliteration": "śhvaśhurān suhṛidaśh chaiva senayor ubhayor api\ntān samīkṣhya sa kaunteyaḥ sarvān bandhūn avasthitān\n",
+ "word_meanings": "śhvaśhurān—fathers-in-law; suhṛidaḥ—well-wishers; cha—and; eva—indeed; senayoḥ—armies; ubhayoḥ—in both armies; api—also; tān—these; samīkṣhya—on seeing; saḥ—they; kaunteyaḥ—Arjun, the son of Kunti; sarvān—all; bandhūn—relatives; avasthitān—present\n"
},
{
"chapter_id": 1,
"chapter_number": 1,
"externalId": 28,
"id": 28,
- "text": "अर्जुन उवाच\n\nकृपया परयाऽऽविष्टो विषीदन्निदमब्रवीत्।\n\nदृष्ट्वेमं स्वजनं कृष्ण युयुत्सुं समुपस्थितम्।।1.28।।\n ",
+ "text": "कृपया परयाऽऽविष्टो विषीदन्न् इदम् अब्रवीत्।\n\nअर्जुन उवाच\n\nदृष्ट्वेमं स्वजनं कृष्ण युयुत्सुं समुपस्थितम्।।1.28।।\n ",
"title": "Verse 28",
"verse_number": 28,
"verse_order": 28,
- "transliteration": "arjuna uvācha\ndṛiṣhṭvemaṁ sva-janaṁ kṛiṣhṇa yuyutsuṁ samupasthitam\n",
- "word_meanings": "arjunaḥ uvācha—Arjun said; dṛiṣhṭvā—on seeing; imam—these; sva-janam—kinsmen; kṛiṣhṇa—Krishna; yuyutsum—eager to fight; samupasthitam—present; \n"
+ "transliteration": "kṛipayā parayāviṣhṭo viṣhīdann idam abravīt\narjuna uvācha\ndṛiṣhṭvemaṁ sva-janaṁ kṛiṣhṇa yuyutsuṁ samupasthitam\n",
+ "word_meanings": "kṛipayā—by compassion; parayā—great; āviṣhṭaḥ—overwhelmed; viṣhīdan—deep sorrow; idam—this; abravīt—spoke; arjunaḥ uvācha—Arjun said; dṛiṣhṭvā—on seeing; imam—these; sva-janam—kinsmen; kṛiṣhṇa—Krishna; yuyutsum—eager to fight; samupasthitam—present; \n"
},
{
"chapter_id": 1,