@using Entities.DTO
@using Entities.Contracts
@using Newtonsoft.Json
@using TechHelper.Client.Exam


<MudPaper Elevation="1" Class="ma-4 pa-5 rounded-xl">
	@* <MudText>@Question.Id</MudText> *@
	<MudText Class="mt-3" Typo="Typo.button"><b>问题属性</b></MudText>

	<MudChipSet T="string" SelectedValue="@Question.QType" CheckMark SelectionMode="SelectionMode.SingleSelection" SelectedValueChanged="HandleQTSelectedValueChanged">

		@foreach (var item in QuestionTypes)
		{
			var qt = item;
			@* Style = "@($"background - color:{ item.Value.Color} ")"*@

			<MudChip Style="@(qt.Key == Question.QType ?
										 		   $"background-color:#ffffff; color:{item.Value.Color}" :
												   $"background-color:{item.Value.Color}; color:#ffffff")"
				 Value="@item.Key">
			@item.Value.DisplayName
		</MudChip>
				}
	</MudChipSet>
	<MudRating SelectedValue="@(diffi)" SelectedValueChanged="HandleSelected" Size="Size.Small" />
	<MudTextField @bind-Value="Question.Title" Label="Title" Variant="Variant.Text" Margin="Margin.Dense" AutoGrow="true" />
	<MudTextField @bind-Value="Question.Answer" Label="Answer" Variant="Variant.Text" Adornment="Adornment.End" AdornmentText="." Margin="Margin.Dense" AutoGrow="true" />
	<MudTextField @bind-Value="Question.Options" Label="Options" Variant="Variant.Text" Adornment="Adornment.End" AdornmentText="." Margin="Margin.Dense" AutoGrow="true" />

</MudPaper>


@code {
	[Parameter]
	public QuestionDto Question { get; set; } = new QuestionDto();
	public int diffi = 0;
	Dictionary<string, QuestionDisplayTypeData> QuestionTypes = new Dictionary<string, QuestionDisplayTypeData>();

	[Inject]
	private ILocalStorageService LocalStorageService { get; set; }
	protected override void OnInitialized()
	{
		base.OnInitialized();

		var cs = LocalStorageService.GetItem<string>("GlobalInfo");
		var GlobalInfo = JsonConvert.DeserializeObject<Dictionary<string, QuestionDisplayTypeData>>(cs);
		if (GlobalInfo != null)
		{
			QuestionTypes = GlobalInfo;
		}
	}
	private void HandleSelectedValueChanged(QuestionType type)
	{
		Question.Type = type;
	}

	private void HandleSelected(int num)
	{
		Question.DifficultyLevel = (DifficultyLevel)num;
	}

	private void HandleQTSelectedValueChanged(string type)
	{
		Question.QType = type;
		StateHasChanged();
	}
}
