people tags #387

This commit is contained in:
Hamid Reza Mohammadi 2026-10-04 07:58:00 +03:30
parent 15c8f8f526
commit 2e0e87d277
8 changed files with 30 additions and 3 deletions

View File

@ -37,6 +37,7 @@
case PersonAffiliationType.MilitaryCommander: return "سردار";
case PersonAffiliationType.Champion: return "پهلوان";
case PersonAffiliationType.Contemporary: return "هم‌عصر";
case PersonAffiliationType.Killer: return "قاتل";
case PersonAffiliationType.Other: return "نوع دیگر";
default: return t.ToString();
}

View File

@ -267,6 +267,7 @@
'<option value="MilitaryCommander">سردار</option>' +
'<option value="Champion">پهلوان</option>' +
'<option value="Contemporary">هم‌عصر (بدون نسبت دیگر)</option>' +
'<option value="Killer">قاتل (طرف اول، طرف دوم را کشته است)</option>' +
'<option value="Other">سایر</option>' +
'</select>' +
'</div>' +
@ -384,6 +385,7 @@
MilitaryCommander: function (p1, p2) { return p1 + ' سردار ' + p2 + ' است.'; },
Champion: function (p1, p2) { return p1 + ' پهلوان ' + p2 + ' است.'; },
Contemporary: function (p1, p2) { return p1 + ' و ' + p2 + ' هم‌عصر هم هستند.'; },
Killer: function (p1, p2) { return p1 + ' ' + p2 + ' را کشته است.'; },
Other: function (p1, p2) { return p1 + ' با ' + p2 + ' نسبتی دارد (طبق یادداشت).'; }
}
};

View File

@ -127,6 +127,8 @@ else
<option value="Rival">با او رقیب/دشمن بود</option>
<option value="Companion">با او همراه/همدم بود</option>
<option value="Contemporary">هم‌عصر او بود (بدون نسبت دیگر)</option>
<option value="Killer_Other">او این نامبرده را کشت</option>
<option value="Killer_Subject">این نامبرده او را کشت</option>
<option value="Other">نوع دیگر (در یادداشت توضیح دهید)</option>
</select>
</td>

View File

@ -164,8 +164,9 @@ namespace GanjooRazor.Areas.User.Pages
// symmetric Person1Id/Person2Id pair, following the direction each PersonAffiliationType
// value's own doc comment defines (Minister/Advisor/Courtier/Servant/MilitaryCommander/
// Champion: Person1 is the subordinate one; Patron/Successor: Person1 is the
// patron/later one; Panegyrized/Satirized: Person1 is the poet; Ally/Rival/Companion/
// Contemporary/Other: symmetric, direction doesn't matter)
// patron/later one; Panegyrized/Satirized: Person1 is the poet; Killer: Person1 is the
// one who did the killing; Ally/Rival/Companion/Contemporary/Other: symmetric,
// direction doesn't matter)
switch (AffiliationKind)
{
case "Minister_Other": // the other person served as minister to this one
@ -288,6 +289,16 @@ namespace GanjooRazor.Areas.User.Pages
suggestion.Person2Id = OtherPersonId;
suggestion.SuggestedAffiliationType = PersonAffiliationType.Contemporary;
break;
case "Killer_Other": // the other person killed this one
suggestion.Person1Id = OtherPersonId;
suggestion.Person2Id = personId;
suggestion.SuggestedAffiliationType = PersonAffiliationType.Killer;
break;
case "Killer_Subject": // this person killed the other one
suggestion.Person1Id = personId;
suggestion.Person2Id = OtherPersonId;
suggestion.SuggestedAffiliationType = PersonAffiliationType.Killer;
break;
case "Other":
suggestion.Person1Id = personId;
suggestion.Person2Id = OtherPersonId;

View File

@ -72,6 +72,7 @@ else
<option value="@((int)PersonAffiliationType.Rival)">رقیب/دشمن</option>
<option value="@((int)PersonAffiliationType.Companion)">همراه/همدم</option>
<option value="@((int)PersonAffiliationType.Contemporary)">هم‌عصر (بدون نسبت دیگر)</option>
<option value="@((int)PersonAffiliationType.Killer)">قاتل (طرف اول، طرف دوم را کشته است)</option>
<option value="@((int)PersonAffiliationType.Other)">نوع دیگر (در یادداشت توضیح دهید)</option>
</select>
<p class="up-hint"><small>جهت وابستگی (کدام طرف زیردست/حامی/... است) قابل تغییر نیست؛ در صورت اشتباه بودن جهت، این وابستگی را حذف و یکی تازه پیشنهاد کنید.</small></p>

View File

@ -118,6 +118,7 @@ namespace GanjooRazor.Pages
{ PersonAffiliationType.MilitaryCommander, "سردارِ" },
{ PersonAffiliationType.Champion, "پهلوانِ" },
{ PersonAffiliationType.Contemporary, "هم‌عصرِ" },
{ PersonAffiliationType.Killer, "قاتلِ" },
{ PersonAffiliationType.Other, "دارای نسبتی (به یادداشت نگاه کنید) با" },
};

View File

@ -9,7 +9,7 @@
// "Relation" (typeValue is PersonRelationType: 0=Parent,1=Sibling,2=Spouse,3=Ancestor) or
// "Affiliation" (typeValue is PersonAffiliationType: 0=Minister,1=Advisor,2=Courtier,3=Patron,
// 4=Ally,5=Rival,6=Servant,7=Companion,8=Successor,9=Panegyrized,10=Satirized,11=MilitaryCommander,
// 12=Champion,13=Contemporary,99=Other). directlyTagged is false only on
// 12=Champion,13=Contemporary,14=Killer,99=Other). directlyTagged is false only on
// the category-scoped graph (GET api/ganjoor/cat/{id}/persongraph, the "characters in this work"
// tab): such a node was pulled in as a one-hop relative/affiliate of someone actually named in the
// work's verses, and is never false on the whole-site graph fed by PeopleExplorer.cshtml. importance

View File

@ -96,6 +96,15 @@ namespace RMuseum.Models.Ganjoor
/// </summary>
Contemporary = 13,
/// <summary>
/// Person1 killed Person2 (کشتن) - directional. Deliberately separate from Rival: an act of
/// killing is usually a single event (e.g. in battle, by treachery, in a duel), and doesn't by
/// itself mean the two were ongoing enemies/rivals beforehand - they could have been allies,
/// kin-by-marriage, or strangers. Use Rival instead (additionally, if applicable) when there
/// was a standing enmity, and Note for how/why the killing happened
/// </summary>
Killer = 14,
/// <summary>
/// doesn't fit any of the above - rely on Note for what the tie actually is
/// </summary>