Рейтинг в окне TeacherControlPlugin.cs
Мелкие правки чтобы не выбрасывались исключения при дебаггинге Мелкие правки Робота - клетка вместо ячейки
This commit is contained in:
parent
a6d507d2bc
commit
c809da4f21
|
|
@ -2706,7 +2706,7 @@ namespace CodeCompletion
|
|||
|
||||
private void add_system_unit()
|
||||
{
|
||||
string unit_file_name = this.converter.controller.Parser.LanguageInformation.SystemUnitName;
|
||||
string unit_file_name = this.converter.controller.Parser?.LanguageInformation.SystemUnitName;
|
||||
if (unit_file_name == null) return;
|
||||
string unit_name = CodeCompletionNameHelper.FindSourceFileName(unit_file_name);
|
||||
if (unit_name != null)
|
||||
|
|
|
|||
|
|
@ -1291,7 +1291,7 @@ namespace CodeCompletion
|
|||
|
||||
public override string ToString()
|
||||
{
|
||||
return CodeCompletionController.CurrentParser.LanguageInformation.GetSimpleDescription(this);
|
||||
return CodeCompletionController.CurrentParser?.LanguageInformation.GetSimpleDescription(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "8";
|
||||
public const string Build = "3";
|
||||
public const string Revision = "3244";
|
||||
public const string Revision = "3247";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=3
|
||||
%REVISION%=3244
|
||||
%MINOR%=8
|
||||
%REVISION%=3247
|
||||
%COREVERSION%=3
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.8.3.3244
|
||||
3.8.3.3247
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.8.3.3244'
|
||||
!define VERSION '3.8.3.3247'
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ procedure Left;
|
|||
procedure Up;
|
||||
/// Переместить Робота вниз
|
||||
procedure Down;
|
||||
/// Закрасить текущую ячейку
|
||||
/// Закрасить текущую клетку
|
||||
procedure Paint;
|
||||
/// Возвращает True, если справа от Робота - свободно, и False в противном случае
|
||||
function FreeFromRight: boolean;
|
||||
|
|
@ -35,9 +35,9 @@ function WallFromLeft: boolean;
|
|||
function WallFromUp: boolean;
|
||||
/// Возвращает True, если снизу от Робота - стена, и False в противном случае
|
||||
function WallFromDown: boolean;
|
||||
/// Возвращает True, если текущая ячейка не закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка не закрашена, и False в противном случае
|
||||
function CellIsFree: boolean;
|
||||
/// Возвращает True, если текущая ячейка закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка закрашена, и False в противном случае
|
||||
function CellIsPainted: boolean;
|
||||
/// Вызывать задание с именем name
|
||||
procedure Task(name: string);
|
||||
|
|
@ -79,10 +79,14 @@ function СлеваСтена: boolean;
|
|||
function СверхуСтена: boolean;
|
||||
/// Возвращает True, если снизу от Робота - стена, и False в противном случае
|
||||
function СнизуСтена: boolean;
|
||||
/// Возвращает True, если текущая ячейка не закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка не закрашена, и False в противном случае
|
||||
function ЯчейкаНеЗакрашена: boolean;
|
||||
/// Возвращает True, если текущая ячейка закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка закрашена, и False в противном случае
|
||||
function ЯчейкаЗакрашена: boolean;
|
||||
/// Возвращает True, если текущая клетка не закрашена, и False в противном случае
|
||||
function КлеткаНеЗакрашена: boolean;
|
||||
/// Возвращает True, если текущая клетка закрашена, и False в противном случае
|
||||
function КлеткаЗакрашена: boolean;
|
||||
/// Вызывать задание с данным именем
|
||||
procedure Задание(имя: string);
|
||||
/// Создать пустое поле размера 9 на 11 клеток
|
||||
|
|
@ -250,6 +254,8 @@ function СверхуСтена := WallFromUp;
|
|||
function СнизуСтена := WallFromDown;
|
||||
function ЯчейкаНеЗакрашена := CellIsFree;
|
||||
function ЯчейкаЗакрашена := CellIsPainted;
|
||||
function КлеткаНеЗакрашена := CellIsFree;
|
||||
function КлеткаЗакрашена := CellIsPainted;
|
||||
procedure Задание(имя: string) := Task(имя);
|
||||
procedure СтандартноеПоле := StandardField;
|
||||
procedure Поле(n,m: integer) := Field(n,m);
|
||||
|
|
|
|||
4
VisualPascalABCNET/AboutBox.Designer.cs
generated
4
VisualPascalABCNET/AboutBox.Designer.cs
generated
|
|
@ -167,9 +167,9 @@
|
|||
this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label12.Location = new System.Drawing.Point(3, 0);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(317, 13);
|
||||
this.label12.Size = new System.Drawing.Size(311, 13);
|
||||
this.label12.TabIndex = 17;
|
||||
this.label12.Text = "Copyright (c) 2005, 2023 Ivan Bondarev, Stanislav Mikhalkovich";
|
||||
this.label12.Text = "Copyright (c) 2005, 2023 Ivan Bondarev, Stanislav Mikhalkovich";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
|
|
|
|||
|
|
@ -25,7 +25,14 @@ namespace VisualPascalABC
|
|||
}
|
||||
public void AppendTextToConsoleCompiler(object text)
|
||||
{
|
||||
CompilerConsole.AppendText(text as string);
|
||||
try
|
||||
{
|
||||
CompilerConsole.AppendText(text as string); // SSM !!!!!!!!!!!!!!! 18/02/23
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void AddTextToCompilerMessages(string text)
|
||||
|
|
|
|||
|
|
@ -103,6 +103,8 @@ namespace VisualPascalABCPlugins
|
|||
key = key.OpenSubKey("Microsoft");
|
||||
key = key.OpenSubKey("VisualStudio");
|
||||
key = key.OpenSubKey("8.0");
|
||||
if (key == null)
|
||||
return null;
|
||||
string s = (string)key.GetValue("InstallDir");
|
||||
key.Close();
|
||||
s = System.IO.Path.GetDirectoryName(s);
|
||||
|
|
|
|||
|
|
@ -43,8 +43,9 @@
|
|||
this.PluginImageAuthorized = new System.Windows.Forms.PictureBox();
|
||||
this.panelUnAuthorized = new System.Windows.Forms.Panel();
|
||||
this.panelAuthorized = new System.Windows.Forms.Panel();
|
||||
this.labelUserName = new System.Windows.Forms.Label();
|
||||
this.labelRating = new System.Windows.Forms.Label();
|
||||
this.labelUserName = new System.Windows.Forms.Label();
|
||||
this.labelDetails = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.userImage)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupImage)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PluginImage)).BeginInit();
|
||||
|
|
@ -188,29 +189,39 @@
|
|||
// panelAuthorized
|
||||
//
|
||||
this.panelAuthorized.Controls.Add(this.labelRating);
|
||||
this.panelAuthorized.Controls.Add(this.labelDetails);
|
||||
this.panelAuthorized.Controls.Add(this.labelUserName);
|
||||
this.panelAuthorized.Location = new System.Drawing.Point(0, 0);
|
||||
this.panelAuthorized.Name = "panelAuthorized";
|
||||
this.panelAuthorized.Size = new System.Drawing.Size(422, 132);
|
||||
this.panelAuthorized.TabIndex = 14;
|
||||
//
|
||||
// labelRating
|
||||
//
|
||||
this.labelRating.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.labelRating.Location = new System.Drawing.Point(12, 50);
|
||||
this.labelRating.Name = "labelRating";
|
||||
this.labelRating.Size = new System.Drawing.Size(398, 26);
|
||||
this.labelRating.TabIndex = 12;
|
||||
this.labelRating.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// labelUserName
|
||||
//
|
||||
this.labelUserName.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.labelUserName.Location = new System.Drawing.Point(25, 14);
|
||||
this.labelUserName.Font = new System.Drawing.Font("Microsoft Sans Serif", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.labelUserName.Location = new System.Drawing.Point(0, 14);
|
||||
this.labelUserName.Name = "labelUserName";
|
||||
this.labelUserName.Size = new System.Drawing.Size(372, 26);
|
||||
this.labelUserName.Size = new System.Drawing.Size(419, 26);
|
||||
this.labelUserName.TabIndex = 11;
|
||||
this.labelUserName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// labelRating
|
||||
// labelDetails
|
||||
//
|
||||
this.labelRating.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.labelRating.Location = new System.Drawing.Point(25, 53);
|
||||
this.labelRating.Name = "labelRating";
|
||||
this.labelRating.Size = new System.Drawing.Size(372, 26);
|
||||
this.labelRating.TabIndex = 12;
|
||||
this.labelRating.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.labelDetails.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.labelDetails.Location = new System.Drawing.Point(12, 86);
|
||||
this.labelDetails.Name = "labelDetails";
|
||||
this.labelDetails.Size = new System.Drawing.Size(398, 26);
|
||||
this.labelDetails.TabIndex = 13;
|
||||
this.labelDetails.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// LoginForm
|
||||
//
|
||||
|
|
@ -259,5 +270,6 @@
|
|||
private System.Windows.Forms.Label labelUserName;
|
||||
private System.Windows.Forms.Panel panelAuthorized;
|
||||
private System.Windows.Forms.Label labelRating;
|
||||
private System.Windows.Forms.Label labelDetails;
|
||||
}
|
||||
}
|
||||
|
|
@ -238,6 +238,12 @@ namespace DBAccessPluginNamespace
|
|||
}
|
||||
}
|
||||
|
||||
public void SetRating(string rating)
|
||||
{
|
||||
var ss = rating.Split('|');
|
||||
labelRating.Text = $"Рейтинг: {ss[0]} баллов";
|
||||
labelDetails.Text = ss[1];
|
||||
}
|
||||
public void ChangeControlsAfterLogin(string login)
|
||||
{
|
||||
try
|
||||
|
|
@ -308,6 +314,9 @@ namespace DBAccessPluginNamespace
|
|||
{
|
||||
WriteLoginPassToAuthDat(usersNamesBox.Text, passwordBox.Text);
|
||||
ChangeControlsAfterLogin(usersNamesBox.Text);
|
||||
var Rating = await SiteProvider.GetRating("", usersNamesBox.Text, passwordBox.Text);
|
||||
SetRating(Rating);
|
||||
//labelRating.Text = "Рейтинг: " + Rating.ToString();
|
||||
}
|
||||
else MessageBox.Show(answer, "Ошибка");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -213,6 +213,61 @@ namespace DBAccessPluginNamespace
|
|||
return "Success";
|
||||
}
|
||||
|
||||
async public Task<string> GetRating(string shortFIO, string fullFIO, string password)
|
||||
{
|
||||
var values = new Dictionary<string, string>
|
||||
{
|
||||
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||
//{ "shortFIO", ShortFIO }, // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||
{ "FIO", FullFIO },
|
||||
//{ "password", Password}
|
||||
};
|
||||
// Отправка запроса на сервер
|
||||
var content = new FormUrlEncodedContent(values);
|
||||
var response = await client.PostAsync(ServAddr + "/getRating.php", content);
|
||||
string responseText = await response.Content.ReadAsStringAsync();
|
||||
var pieces = responseText.Split(';');
|
||||
|
||||
var res = "";
|
||||
var ClassTasksSolved = 0;
|
||||
var ControlTasksSolved = 0;
|
||||
var HomeworkTasksSolved = 0;
|
||||
var AdditionalTasksSolved = 0;
|
||||
try
|
||||
{
|
||||
foreach (var s in pieces)
|
||||
{
|
||||
if (s.IndexOf(':') < 1) continue;
|
||||
var pair = s.Split(':');
|
||||
switch (pair[0])
|
||||
{
|
||||
case "ClassTasks":
|
||||
ClassTasksSolved = int.Parse(pair[2]);
|
||||
break;
|
||||
case "ControlTasks":
|
||||
ControlTasksSolved = int.Parse(pair[2]);
|
||||
break;
|
||||
case "HomeworkTasks":
|
||||
HomeworkTasksSolved = int.Parse(pair[2]);
|
||||
break;
|
||||
case "AdditionalTasks":
|
||||
AdditionalTasksSolved = int.Parse(pair[2]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// великая формула !!!
|
||||
var Rating = ClassTasksSolved * 1 + ControlTasksSolved * 5 + HomeworkTasksSolved * 3 + AdditionalTasksSolved * 2;
|
||||
var Details = $" (Осн: {ClassTasksSolved}×1, Доп: {AdditionalTasksSolved}×2, ДЗ: {HomeworkTasksSolved}×3, КР: {ControlTasksSolved}×5)";
|
||||
res = Rating.ToString() + '|' + Details;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
res = e.Message;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// Так как мы на сервере пока ничего не запоминаем, то процесс выхода - просто стереть всё
|
||||
public void Logout()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -97,6 +97,8 @@ namespace VisualPascalABCPlugins
|
|||
if (answer.Result == "Success")
|
||||
{
|
||||
loginForm.ChangeControlsAfterLogin(login);
|
||||
var Rating = User.GetRating("", login, pass);
|
||||
loginForm.SetRating(Rating.Result);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ procedure Left;
|
|||
procedure Up;
|
||||
/// Переместить Робота вниз
|
||||
procedure Down;
|
||||
/// Закрасить текущую ячейку
|
||||
/// Закрасить текущую клетку
|
||||
procedure Paint;
|
||||
/// Возвращает True, если справа от Робота - свободно, и False в противном случае
|
||||
function FreeFromRight: boolean;
|
||||
|
|
@ -35,9 +35,9 @@ function WallFromLeft: boolean;
|
|||
function WallFromUp: boolean;
|
||||
/// Возвращает True, если снизу от Робота - стена, и False в противном случае
|
||||
function WallFromDown: boolean;
|
||||
/// Возвращает True, если текущая ячейка не закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка не закрашена, и False в противном случае
|
||||
function CellIsFree: boolean;
|
||||
/// Возвращает True, если текущая ячейка закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка закрашена, и False в противном случае
|
||||
function CellIsPainted: boolean;
|
||||
/// Вызывать задание с именем name
|
||||
procedure Task(name: string);
|
||||
|
|
@ -79,10 +79,14 @@ function СлеваСтена: boolean;
|
|||
function СверхуСтена: boolean;
|
||||
/// Возвращает True, если снизу от Робота - стена, и False в противном случае
|
||||
function СнизуСтена: boolean;
|
||||
/// Возвращает True, если текущая ячейка не закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка не закрашена, и False в противном случае
|
||||
function ЯчейкаНеЗакрашена: boolean;
|
||||
/// Возвращает True, если текущая ячейка закрашена, и False в противном случае
|
||||
/// Возвращает True, если текущая клетка закрашена, и False в противном случае
|
||||
function ЯчейкаЗакрашена: boolean;
|
||||
/// Возвращает True, если текущая клетка не закрашена, и False в противном случае
|
||||
function КлеткаНеЗакрашена: boolean;
|
||||
/// Возвращает True, если текущая клетка закрашена, и False в противном случае
|
||||
function КлеткаЗакрашена: boolean;
|
||||
/// Вызывать задание с данным именем
|
||||
procedure Задание(имя: string);
|
||||
/// Создать пустое поле размера 9 на 11 клеток
|
||||
|
|
@ -250,6 +254,8 @@ function СверхуСтена := WallFromUp;
|
|||
function СнизуСтена := WallFromDown;
|
||||
function ЯчейкаНеЗакрашена := CellIsFree;
|
||||
function ЯчейкаЗакрашена := CellIsPainted;
|
||||
function КлеткаНеЗакрашена := CellIsFree;
|
||||
function КлеткаЗакрашена := CellIsPainted;
|
||||
procedure Задание(имя: string) := Task(имя);
|
||||
procedure СтандартноеПоле := StandardField;
|
||||
procedure Поле(n,m: integer) := Field(n,m);
|
||||
|
|
|
|||
Loading…
Reference in a new issue