Compare commits
252 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c0c97cc0c7 | |||
| fc9a727118 | |||
| 7d57c489d1 | |||
| 4bcf940134 | |||
| c7052ac390 | |||
| 7497f01e7a | |||
| 024f5369e8 | |||
| a990dcf712 | |||
| a382a313e2 | |||
| 39f5be6d9c | |||
| cead2275eb | |||
| e808411cb2 | |||
| da8744de56 | |||
| 0ea0fbd8d4 | |||
| 4d31463688 | |||
| 7086c0a83f | |||
| c5bda8d774 | |||
| c0bc78cb5e | |||
| 5504019044 | |||
| 08d48f6044 | |||
| a554e42f06 | |||
| b4fe6f0c05 | |||
| 5f117de287 | |||
| 89e0e90166 | |||
| 7a6d6aad56 | |||
| c85ed17448 | |||
| a74d2abb19 | |||
| 91fafd459b | |||
| 5fead0145c | |||
| 8f97eeecfd | |||
| 1cadbfd640 | |||
| c6ee7a74b0 | |||
| 98f64f57e5 | |||
| 287e5d1ab8 | |||
| 88e1c64c3b | |||
| ad3a91ad1c | |||
| fb9f1c4b72 | |||
| b8e3cd7ef0 | |||
| 074df56d4d | |||
| f4d226fc2b | |||
| 790652a8c8 | |||
| 816d49a08c | |||
| bc7116cf5d | |||
| 617bb783d2 | |||
| 26f225fabc | |||
| ac1c8f7067 | |||
| 7238579305 | |||
| f13cadd145 | |||
| 216980b923 | |||
| 149205e998 | |||
| ffd24f2539 | |||
| 147b84ab19 | |||
| ec9e23071f | |||
| 85aebf6385 | |||
| 17eabc16da | |||
| 1faba838a7 | |||
| 12378bdac7 | |||
| 611fcb940d | |||
| ab345f7f99 | |||
| e22a34a34e | |||
| 1cb0605d41 | |||
| 1b8e84dd30 | |||
| 9d8a3cd1ea | |||
| ed9f33e5e8 | |||
| fa04f490dc | |||
| 4e625e71c5 | |||
| fa9bed3196 | |||
| 8b645e01d1 | |||
| a8fdd44497 | |||
| f5d1aa04f1 | |||
| c4468e62d8 | |||
| bf4487909c | |||
| 6dc778bbf3 | |||
| 0fc43251bc | |||
| 188ce800e8 | |||
| a7db8bd047 | |||
| a6ee88e4e7 | |||
| 75d881edf6 | |||
| 5f95125ae2 | |||
| 354bf0df6d | |||
| ff6a7a1962 | |||
| d079e187e1 | |||
| e21c13e7c8 | |||
| 3c3ca13af3 | |||
| 2de6e9aae2 | |||
| 87f55952f8 | |||
| 843aa43240 | |||
| 65c7379111 | |||
| c46f7a531a | |||
| 87494489f6 | |||
| ca45edab94 | |||
| ca318a255e | |||
| 3aae8b0f9b | |||
| 5951ab295c | |||
| 2ec4598482 | |||
| 6730de1833 | |||
| 9c5644c52b | |||
| 1753027afd | |||
| a2c5d327db | |||
| 04d94b572c | |||
| 134981c2d7 | |||
| 5da1afa0eb | |||
| e42a231989 | |||
| e509c83b90 | |||
| 79f28bc415 | |||
| 2c94761966 | |||
| 44c6e48398 | |||
| 6c1aa037d5 | |||
| 3a8f702a87 | |||
| b21592609b | |||
| 5a4e86f861 | |||
| 0e41eb6033 | |||
| 11100544c9 | |||
| 42069a2cb2 | |||
| 5c1777a4b6 | |||
| de81cde6ec | |||
| 7c47415d65 | |||
| dcceb55652 | |||
| 247bf212ae | |||
| f5b2745a87 | |||
| 6f46e5a9a5 | |||
| 1c0f161640 | |||
| 7a66c3d63d | |||
| 23af55e1e1 | |||
| 8e3f3ec5e0 | |||
| cf96c67a3c | |||
| ae8f931372 | |||
| 20d9bf716d | |||
| 2f6f308f19 | |||
| 7fd2b6ca30 | |||
| aff9643216 | |||
| 465b09c176 | |||
| 1efde033b2 | |||
| 4a609bc35b | |||
| 88aa48a3d8 | |||
| b280dca20f | |||
| a6d6041b06 | |||
| 46b7b02da9 | |||
| 98d3798824 | |||
| dd7e9b9e19 | |||
| 550b448dc2 | |||
| afaa8f3576 | |||
| 328d2ed176 | |||
| 9bd1faf083 | |||
| 6526a20d5c | |||
| 9f4adce366 | |||
| 7d29511fdb | |||
| e28b736ebf | |||
| 383b5417d4 | |||
| 3f9b2a8c8e | |||
| 382d961761 | |||
| ae3294ca46 | |||
| 1f75da9bef | |||
| ed8400619c | |||
| 67fcba0053 | |||
| a7548a6e78 | |||
| 90fe35fc1c | |||
| 4737d22a2f | |||
| 7a9dca8807 | |||
| 2dfc9e293f | |||
| 3cca07422c | |||
| af4870d99d | |||
| 7b6ee330bb | |||
| 8542b6c565 | |||
| 3c65bced53 | |||
| 95d29cc716 | |||
| bcde0c8d86 | |||
| 76deabb93b | |||
| bfc99fc826 | |||
| cb28589f79 | |||
| 8cae6edff2 | |||
| 34a71b5784 | |||
| 455ddd660c | |||
| bbada3a929 | |||
| 0a00ba3eae | |||
| 7a3a068908 | |||
| 2a3de715da | |||
| 002b235d76 | |||
| b135f017d5 | |||
| 32e0c34945 | |||
| f32d0c0daf | |||
| 014f63bd2b | |||
| a6e58365dd | |||
| 7481d3bf28 | |||
| c036cd30e2 | |||
| 682efe1928 | |||
| d511b49c64 | |||
| bb7ef476ed | |||
| 393da8156b | |||
| 575b74c676 | |||
| 9f27a7b5ce | |||
| 12ee118e72 | |||
| 00994f993b | |||
| 581c6d44fe | |||
| a75edd650e | |||
| eea8a2fa5d | |||
| 14c9fb628b | |||
| 18530ea7b3 | |||
| 04447282ea | |||
| 582a4455e0 | |||
| 43fa8448d2 | |||
| a6df5719f0 | |||
| d23f6fd4c5 | |||
| 91a554d616 | |||
| e96d97890f | |||
| 42186c9509 | |||
| b0391855f5 | |||
| 305e2220f8 | |||
| a5d2323dea | |||
| 95db7bbdd9 | |||
| 345918cdaf | |||
| 8bc9fc97c8 | |||
| cd5ea6c6cc | |||
| fb91158ee6 | |||
| 7b724b070f | |||
| 7bb8602595 | |||
| 02b1b3b4c6 | |||
| f499cdc203 | |||
| fa9db02e0e | |||
| 136f3c40ff | |||
| 0e02b0ca3f | |||
| 913834a34d | |||
| 6b0d5e2c03 | |||
| 3ead2b7283 | |||
| 66ba44868e | |||
| 529266b57b | |||
| e1280c193f | |||
| 77cec0160a | |||
| f7234dd34b | |||
| 4c7ad000db | |||
| 140afc4539 | |||
| 699ccfbfba | |||
| 3877cb7843 | |||
| 80e6192e46 | |||
| 2786c8e6a8 | |||
| efbfd857f6 | |||
| 3968f72061 | |||
| 88e78736f0 | |||
| a362829256 | |||
| 43abdd203b | |||
| 74e51a4156 | |||
| 52621f83e8 | |||
| 9be02d4666 | |||
| d16712bbd9 | |||
| 8c96c46d35 | |||
| 678312ceca | |||
| 072b216eff | |||
| 2f2fc02730 | |||
| cccd8f2c36 | |||
| 4e27d3fe63 | |||
| 8d57a29fd9 | |||
| 71a1333c12 |
@@ -4,7 +4,7 @@
|
||||
<IsSCM>false</IsSCM>
|
||||
<TranspColor>#FF00FF</TranspColor>
|
||||
<RenderingMethod>GPU</RenderingMethod> <!-- GPU/CPU -->
|
||||
<ShowVirtualKeyboard>false</ShowVirtualKeyboard>
|
||||
<ShowVirtualKeyboard>true</ShowVirtualKeyboard>
|
||||
<RunningOnSecondaryScreen>false</RunningOnSecondaryScreen>
|
||||
<DeveloperMode>true</DeveloperMode>
|
||||
</Client>
|
||||
@@ -12,9 +12,9 @@
|
||||
<ServerUrl>localhost</ServerUrl>
|
||||
<ServerPort>9000</ServerPort>
|
||||
<Id>1</Id>
|
||||
<DeleteCahceFolderOnStartup>true</DeleteCahceFolderOnStartup>
|
||||
<DeleteCahceFolderOnStartup>false</DeleteCahceFolderOnStartup>
|
||||
</Connection>
|
||||
<VendorHmi>
|
||||
<FollowNcWindow>True</FollowNcWindow>
|
||||
<FollowNcWindow>false</FollowNcWindow>
|
||||
</VendorHmi>
|
||||
</Config>
|
||||
@@ -38,13 +38,14 @@ namespace Active_Client.Browser_Tools
|
||||
|
||||
private static readonly string[] _validExtensions = {".json", ".rcp", ".tpl" };
|
||||
//private static readonly string[] _validExtensions = { "", ".txt", ".cnc", ".cn", ".cno", ".ini", ".mpf", ".spf", ".tap", ".anc", ".iso" };
|
||||
private static readonly string[] _validImages = { ".jpg", ".jpeg", ".png" };
|
||||
private static readonly string[] _validImages = { ".svg" };
|
||||
private static string jobPath = "";
|
||||
private static Dictionary<string, IntPtr> _editorOpened = new Dictionary<string, IntPtr>();
|
||||
private static EditorVar _currentEditorObject = new EditorVar();
|
||||
public static string RECENT_FOLDER_KEY = "RECENT";
|
||||
private const string THERMO_RECIPE_PATH = @"C:\CMS\Recipes";
|
||||
|
||||
private const string THERMO_RECIPE_PATH = @"C:\CMS\Recipes";
|
||||
private const string CMS_PATH = @"C:\CMS";
|
||||
|
||||
public static FileSystemWatcher watcher = null;
|
||||
public static DateTime _lastTimeFileWatcherEventRaised = DateTime.Now;
|
||||
|
||||
@@ -77,9 +78,16 @@ namespace Active_Client.Browser_Tools
|
||||
AddFunction("openOrStartProcess").Execute += openOrStartProcess;
|
||||
AddFunction("isVirtualKeybConfigured").Execute += isVirtualKeybConfigured;
|
||||
AddFunction("getOSdriveList").Execute += getOSdriveList;
|
||||
AddFunction("getAllRecipeDirectories").Execute += getAllRecipeDirectories;
|
||||
AddFunction("getFileList").Execute += getFileList;
|
||||
AddFunction("getProgramInfo").Execute += getProgramInfo;
|
||||
AddFunction("editProgram").Execute += editProgram;
|
||||
AddFunction("deleteFile").Execute += deleteFile;
|
||||
AddFunction("deleteFolder").Execute += deleteFolder;
|
||||
AddFunction("createFolder").Execute += createFolder;
|
||||
AddFunction("duplicateRecipe").Execute += duplicateRecipe;
|
||||
|
||||
|
||||
|
||||
AddFunction("uploadAndActivateProgram").Execute += uploadAndActivateProgram;
|
||||
AddFunction("uploadAndAddToQueue").Execute += uploadAndAddToQueue;
|
||||
@@ -359,32 +367,6 @@ namespace Active_Client.Browser_Tools
|
||||
{
|
||||
List<Drive> drivelist = new List<Drive>();
|
||||
|
||||
// USB & HD Drives
|
||||
foreach (var drive in DriveInfo.GetDrives())
|
||||
{
|
||||
if (drive.IsReady)
|
||||
{
|
||||
//Filter NC Address
|
||||
if (drive.DriveType != DriveType.Network)
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName(drive.VolumeLabel, drive.Name.TrimEnd('\\'), drive.DriveType),
|
||||
Path = drive.RootDirectory.ToString(),
|
||||
Type = ElaborateType(drive.DriveType)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Desktop folder
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName("Desktop", "", DriveType.Unknown),
|
||||
Path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\",
|
||||
Type = "SPFO"
|
||||
});
|
||||
|
||||
if (Directory.Exists(THERMO_RECIPE_PATH))
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
@@ -395,31 +377,58 @@ namespace Active_Client.Browser_Tools
|
||||
});
|
||||
}
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(drivelist));
|
||||
}
|
||||
|
||||
public void getAllRecipeDirectories(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
List<string> dirs = this.DirSearch(THERMO_RECIPE_PATH);
|
||||
for (int i = 0; i< dirs.Count; i++)
|
||||
{
|
||||
dirs[i] = dirs[i].Remove(0,CMS_PATH.Length +1);
|
||||
}
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(dirs));
|
||||
}
|
||||
|
||||
|
||||
public void duplicateRecipe(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() < 2)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
string oldFile = CMS_PATH + "\\" + e.Arguments[0].StringValue + ".rcp";
|
||||
string newFile = CMS_PATH + "\\" + e.Arguments[1].StringValue + ".rcp";
|
||||
string oldImage = CMS_PATH + "\\" + e.Arguments[0].StringValue + ".svg";
|
||||
string newImage = CMS_PATH + "\\" + e.Arguments[1].StringValue + ".svg";
|
||||
if (!File.Exists(oldFile))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
|
||||
return;
|
||||
}
|
||||
if (File.Exists(newFile))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_already_exists")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
// Network Folders
|
||||
var searcher = new ManagementObjectSearcher("select * from Win32_MappedLogicalDisk");
|
||||
foreach (ManagementObject queryObj in searcher.Get())
|
||||
File.Copy(oldFile, newFile, true);
|
||||
if (File.Exists(oldImage))
|
||||
{
|
||||
//Filter not CNC folder
|
||||
if (!queryObj["ProviderName"].ToString().Contains(Config.VendorHmiConfig.IpAddress))
|
||||
{
|
||||
drivelist.Add(new Drive()
|
||||
{
|
||||
Name = ElaborateName(queryObj["VolumeName"].ToString(), queryObj["Name"].ToString(), DriveType.Network),
|
||||
Path = queryObj["Name"].ToString(),
|
||||
Type = ElaborateType(DriveType.Network)
|
||||
});
|
||||
}
|
||||
File.Copy(oldImage, newImage, true);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_copy_file")));
|
||||
}
|
||||
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(drivelist));
|
||||
}
|
||||
|
||||
|
||||
// Read all files in directory
|
||||
public void getFileList(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
@@ -427,14 +436,14 @@ namespace Active_Client.Browser_Tools
|
||||
List<FileModel> filelist = new List<FileModel>();
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new List<FileModel>()));
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
string p = e.Arguments[0].StringValue;
|
||||
if (p != RECENT_FOLDER_KEY && !Directory.Exists(p))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new List<FileModel>()));
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_exists")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -485,6 +494,90 @@ namespace Active_Client.Browser_Tools
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(filelist));
|
||||
}
|
||||
|
||||
public void deleteFile(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get path
|
||||
string p = e.Arguments[0].StringValue;
|
||||
FileAttributes attr = File.GetAttributes(p);
|
||||
if (!File.Exists(p) || attr.HasFlag(FileAttributes.Directory))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
|
||||
return;
|
||||
}
|
||||
if (attr.HasFlag(FileAttributes.ReadOnly))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_editable")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
File.Delete(p);
|
||||
string images = Path.ChangeExtension(p, "svg");
|
||||
if(File.Exists(images))
|
||||
{
|
||||
File.Delete(images);
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_file")));
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteFolder(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get path
|
||||
string p = e.Arguments[0].StringValue;
|
||||
FileAttributes attr = File.GetAttributes(p);
|
||||
if (!Directory.Exists(p) || !attr.HasFlag(FileAttributes.Directory))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_not_found")));
|
||||
return;
|
||||
}
|
||||
if (attr.HasFlag(FileAttributes.ReadOnly))
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_not_editable")));
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
Directory.Delete(p,true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
|
||||
}
|
||||
}
|
||||
|
||||
public void createFolder(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
|
||||
return;
|
||||
}
|
||||
string path = e.Arguments[0].StringValue;
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
|
||||
}
|
||||
}
|
||||
// Upload and activate the program
|
||||
public async void uploadAndActivateProgram(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
@@ -671,8 +764,7 @@ namespace Active_Client.Browser_Tools
|
||||
// Read info of a file
|
||||
public void getProgramInfo(object sender, CfrV8HandlerExecuteEventArgs e)
|
||||
{
|
||||
string line, imagePath, imageDirectory;
|
||||
int counter = 0;
|
||||
string imagePath, imageDirectory;
|
||||
|
||||
if (e.Arguments.Count() == 0)
|
||||
{
|
||||
@@ -725,7 +817,10 @@ namespace Active_Client.Browser_Tools
|
||||
{
|
||||
if (File.Exists(imageDirectory + "/" + imagePath + ext))
|
||||
{
|
||||
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
|
||||
if (ext.ToLower().Equals(".svg"))
|
||||
file.PreviewBase64 = File.ReadAllText(imageDirectory + "/" + imagePath + ext);
|
||||
else
|
||||
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -976,6 +1071,26 @@ namespace Active_Client.Browser_Tools
|
||||
return retName;
|
||||
}
|
||||
|
||||
|
||||
private List<String> DirSearch(string sDir)
|
||||
{
|
||||
List<String> files = new List<String>();
|
||||
try
|
||||
{
|
||||
files.Add(sDir);
|
||||
foreach (string d in Directory.GetDirectories(sDir))
|
||||
{
|
||||
files.AddRange(DirSearch(d));
|
||||
}
|
||||
}
|
||||
catch (System.Exception excpt)
|
||||
{
|
||||
MessageBox.Show(excpt.Message);
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
#endregion FILESYSTEM_METHODS
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Management;
|
||||
using System.Security.Permissions;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -25,14 +26,13 @@ namespace Active_Client
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#region MAIN_METHOD
|
||||
|
||||
[STAThread]
|
||||
[STAThread]
|
||||
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
//Crate General Exception Handler
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
|
||||
|
||||
//Crate General Exception Handler
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
|
||||
|
||||
|
||||
//Read App Configuration
|
||||
readConfiguration();
|
||||
|
||||
@@ -165,7 +165,7 @@ namespace Active_Client.View
|
||||
public void sendClose()
|
||||
{
|
||||
//Close Virtual Keyboard Runtime
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard)
|
||||
NcWindow.closeVirtualKeyboard();
|
||||
|
||||
//Close the NC HMI && Stop Following Nc
|
||||
@@ -259,7 +259,7 @@ namespace Active_Client.View
|
||||
Browser.DisplayHandler.OnConsoleMessage += BrowserConsoleMessage;
|
||||
Browser.DownloadHandler.OnBeforeDownload += BeforeDownload;
|
||||
//Filter only < Win_10 Platform
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard)
|
||||
ChromiumWebBrowser.RemoteProcessCreated += (e) => { e.RenderProcessHandler.OnFocusedNodeChanged += BrowserNodeChanged; };
|
||||
}
|
||||
|
||||
@@ -434,7 +434,7 @@ namespace Active_Client.View
|
||||
string dom = ev.Node.GetElementAttribute("type").ToLower();
|
||||
|
||||
//Filter if the node Type is TEXT or PASSWORD
|
||||
if (dom != null && (dom.Equals("text") || dom.Equals("password")))
|
||||
if (dom != null && (dom.Equals("text") || dom.Equals("password") || dom.Equals("")))
|
||||
NcWindow.openVirtualKeyboard(ev.Node.ElementBounds, ev.Browser.Identifier > 1, false);
|
||||
}
|
||||
//Filter if this node is TEXTAREA Node
|
||||
|
||||
@@ -1047,7 +1047,7 @@ namespace Active_Client.View
|
||||
if (!IsIconic(MainViewHandle))
|
||||
{
|
||||
//Show Virtual keyboard
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard)
|
||||
reOpenVirtualKeyboard();
|
||||
}
|
||||
}
|
||||
@@ -1069,7 +1069,7 @@ namespace Active_Client.View
|
||||
//SetForegroundWindow(hwnd);
|
||||
|
||||
//Hide Virtual keyboard
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10 && KeyboardPID != 0 && ActualPID != KeyboardPID)
|
||||
if (Config.ClientConfig.ShowVirtualKeyboard && KeyboardPID != 0 && ActualPID != KeyboardPID)
|
||||
closeVirtualKeyboard();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,11 +5,24 @@
|
||||
|
||||
## Ambiente sviluppo e simulazione
|
||||
|
||||
## Procedura udpate DB
|
||||
|
||||
In caso di update del modello DB, seguendo questa guida (https://www.entityframeworktutorial.net/efcore/entity-framework-core-migration.aspx#:~:text=Adding%20a%20Migration,-At%20the%20very&text=So%2C%20firstly%2C%20you%20need%20to,command%20to%20add%20a%20migration.&text=If%20you%20are%20using%20dotnet,Interface%2C%20execute%20the%20following%20command.)
|
||||
|
||||
* si modifica lato classe il modello
|
||||
* si apre il PM Nuget,s elezionando il progetto DB (che contiene le migrations)
|
||||
* si da il comando di migrazione con un testo descrittivo, tipo
|
||||
add-migration MyFirstMigration
|
||||
* si può poi aggiornare il DB manualmente (o all'avvio del sw) con il comando
|
||||
Update-Database
|
||||
|
||||
## Procedura Riavvio su SIM
|
||||
|
||||
Step come indicati da M.Carissoni:
|
||||
* Dai un paio di ResetSK
|
||||
* fai cicloReset
|
||||
* mettere macchina in MANUAL
|
||||
* Dai un paio di ResetSK (prima softkey! oppure sul pannello siemens)
|
||||
* fai cicloReset (softkey)
|
||||
* parcheggio macchina da GANT (fino a che si spegne)
|
||||
* quando si spegne ciclo reset auto
|
||||
* Inizia a lampeggiare start e lo clicchi e parte
|
||||
* Quando si spegne cicloReset fai cicloAuto
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:element name="inputsOperator">
|
||||
<xs:complexType>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="realValueModal" type="valuesType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="showValModal" type="showValType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="buttonsListModal" type="buttonsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="simpleModal" type="modalType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="valuesType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="showValType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="buttons">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="button">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:int"></xs:element>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="buttonsType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="buttons">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="button">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:int"></xs:element>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="modalType">
|
||||
<xs:all>
|
||||
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- Translations field Type -->
|
||||
<xs:complexType name="translatedText">
|
||||
<xs:sequence>
|
||||
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- lang field -->
|
||||
<xs:complexType name="langType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="langKey" use="required" type="xs:string" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -1,27 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<axes>
|
||||
<axis id="1" >X</axis>
|
||||
<axis id="2" >Y</axis>
|
||||
<axis id="3" >Z</axis>
|
||||
<axis id="4" >B</axis>
|
||||
<axis id="5" >C</axis>
|
||||
<axis id="6" >V</axis>
|
||||
<axis id="7" ></axis>
|
||||
<axis id="8" ></axis>
|
||||
<axis id="9" ></axis>
|
||||
<axis id="10" ></axis>
|
||||
<axis id="11" ></axis>
|
||||
<axis id="12" ></axis>
|
||||
<axis id="13" ></axis>
|
||||
<axis id="14" ></axis>
|
||||
<axis id="15" ></axis>
|
||||
<axis id="16" ></axis>
|
||||
<axis id="17" >SP</axis>
|
||||
<axis id="18" ></axis>
|
||||
<axis id="19" ></axis>
|
||||
<axis id="20" ></axis>
|
||||
<axis id="21" ></axis>
|
||||
<axis id="22" ></axis>
|
||||
<axis id="23" ></axis>
|
||||
<axis id="24" ></axis>
|
||||
<axis id="1" name="KI_Asse_W1" type="LINEAR" enabled="true" />
|
||||
<axis id="2" name="KI_Asse_W2" type="LINEAR" enabled="true" />
|
||||
<axis id="3" name="KI_Asse_W3" type="LINEAR" enabled="false" />
|
||||
<axis id="4" name="KI_Asse_W4" type="LINEAR" enabled="false" />
|
||||
<axis id="5" name="KI_Asse_Z1" type="LINEAR" enabled="true" />
|
||||
<axis id="6" name="KI_Asse_Z2" type="LINEAR" enabled="true" />
|
||||
<axis id="7" name="KI_Asse_Z3" type="LINEAR" enabled="true" />
|
||||
<axis id="8" name="KI_Asse_Z4" type="LINEAR" enabled="true" />
|
||||
<axis id="9" name="KI_Asse_R1" type="LINEAR" enabled="true" />
|
||||
<axis id="10" name="KI_Asse_R2" type="LINEAR" enabled="false" />
|
||||
<axis id="11" name="KI_Asse_S1" type="LINEAR" enabled="true" />
|
||||
<axis id="12" name="KI_Asse_S2" type="LINEAR" enabled="false" />
|
||||
<axis id="13" name="KI_Asse_CZ1" type="LINEAR" enabled="true" />
|
||||
<axis id="14" name="KI_Asse_CZ2" type="LINEAR" enabled="true" />
|
||||
<axis id="15" name="KI_Asse_CZ3" type="LINEAR" enabled="true" />
|
||||
<axis id="16" name="KI_Asse_CZ4" type="LINEAR" enabled="true" />
|
||||
<axis id="17" name="KI_Asse_U1" type="LINEAR" enabled="true" />
|
||||
<axis id="18" name="KI_Asse_U2" type="LINEAR" enabled="true" />
|
||||
<axis id="19" name="KI_Asse_P" type="LINEAR" enabled="true" />
|
||||
<axis id="20" name="KI_Asse_X" type="LINEAR" enabled="true" />
|
||||
<axis id="21" name="KI_Asse_CX1" type="LINEAR" enabled="true" />
|
||||
<axis id="22" name="KI_Asse_CX2" type="LINEAR" enabled="true" />
|
||||
<axis id="23" name="KI_Asse_CY1" type="LINEAR" enabled="true" />
|
||||
<axis id="24" name="KI_Asse_CY2" type="LINEAR" enabled="true" />
|
||||
<axis id="25" name="KI_Asse_F11" type="LINEAR" enabled="true" />
|
||||
<axis id="26" name="KI_Asse_F12" type="LINEAR" enabled="false" />
|
||||
<axis id="27" name="KI_Asse_F21" type="LINEAR" enabled="true" />
|
||||
<axis id="28" name="KI_Asse_F22" type="LINEAR" enabled="false" />
|
||||
<axis id="29" name="KI_Asse_F31" type="LINEAR" enabled="true" />
|
||||
<axis id="30" name="KI_Asse_F32" type="LINEAR" enabled="false" />
|
||||
<axis id="31" name="KI_Asse_F41" type="LINEAR" enabled="true" />
|
||||
<axis id="32" name="KI_Asse_F42" type="LINEAR" enabled="false" />
|
||||
<axis id="33" name="KI_Asse_E" type="LINEAR" enabled="true" />
|
||||
<axis id="34" name="KI_Asse_M" type="LINEAR" enabled="false" />
|
||||
</axes>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="axes">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="axis" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="axisType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="axisType">
|
||||
<xs:attribute name="id" type="xs:integer" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="name" type="xs:string" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="type" type="axType" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="enabled" type="xs:boolean" use="required">
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="axType" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="NA" />
|
||||
<xs:enumeration value="LINEAR" />
|
||||
<xs:enumeration value="ROTATIONAL" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<inputsOperator>
|
||||
<buttonsListModal>
|
||||
<id>1</id>
|
||||
<title>
|
||||
<lang langKey="it">Hai rimosso manualmente anche il pezzo lavorato ?</lang>
|
||||
<lang langKey="en">Have you also manually removed the workpiece ?</lang>
|
||||
</title>
|
||||
<buttons>
|
||||
<button>
|
||||
<value>0</value>
|
||||
<title>
|
||||
<lang langKey="it">No</lang>
|
||||
<lang langKey="en">No</lang>
|
||||
</title>
|
||||
</button>
|
||||
<button>
|
||||
<value>1</value>
|
||||
<title>
|
||||
<lang langKey="it">Si</lang>
|
||||
<lang langKey="en">Yes</lang>
|
||||
</title>
|
||||
</button>
|
||||
</buttons>
|
||||
</buttonsListModal>
|
||||
<simpleModal>
|
||||
<id>2</id>
|
||||
<title>
|
||||
<lang langKey="it">DUE Hai rimosso manualmente anche il pezzo lavorato ?</lang>
|
||||
<lang langKey="en">DUE Have you also manually removed the workpiece ?</lang>
|
||||
</title>
|
||||
</simpleModal>
|
||||
<realValueModal>
|
||||
<id>10</id>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</realValueModal>
|
||||
<realValueModal>
|
||||
<id>11</id>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</realValueModal>
|
||||
<buttonsListModal>
|
||||
<id>6</id>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
<buttons>
|
||||
<button>
|
||||
<value>3</value>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</button>
|
||||
<button>
|
||||
<value>4</value>
|
||||
<title>
|
||||
<lang langKey="en">External water</lang>
|
||||
<lang langKey="it">Acqua esterna</lang>
|
||||
</title>
|
||||
</button>
|
||||
</buttons>
|
||||
</buttonsListModal>
|
||||
</inputsOperator>
|
||||
@@ -71,6 +71,9 @@
|
||||
<idParam>80</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>3</priority>
|
||||
<category>Pyrometer</category>
|
||||
<subCategory_1>Pyrometer</subCategory_1>
|
||||
<subCategory_2></subCategory_2>
|
||||
</block>
|
||||
<block>
|
||||
<id>9</id>
|
||||
@@ -116,6 +119,9 @@
|
||||
<idParam>99</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>2</priority>
|
||||
<category>Drawing</category>
|
||||
<subCategory_1></subCategory_1>
|
||||
<subCategory_2></subCategory_2>
|
||||
</block>
|
||||
<block>
|
||||
<id>14</id>
|
||||
@@ -152,6 +158,9 @@
|
||||
<idParam>139</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<priority>4</priority>
|
||||
<category>Cooling</category>
|
||||
<subCategory_1>Pyrometer</subCategory_1>
|
||||
<subCategory_2></subCategory_2>
|
||||
</block>
|
||||
<block>
|
||||
<id>19</id>
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
<xs:element name="priority" type="xs:int" />
|
||||
<xs:element name="scaleFactor" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="numDec" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="category" type="param_type" minOccurs="0" />
|
||||
<xs:element name="subCategory_1" type="xs:string" minOccurs="0" />
|
||||
<xs:element name="subCategory_2" type="xs:string" minOccurs="0" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -23,6 +26,23 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<!-- Head Type -->
|
||||
<xs:simpleType name="param_type" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="General" />
|
||||
<xs:enumeration value="Positions" />
|
||||
<xs:enumeration value="Cycle"/>
|
||||
<xs:enumeration value="Heats"/>
|
||||
<xs:enumeration value="Pyrometer"/>
|
||||
<xs:enumeration value="Drawing"/>
|
||||
<xs:enumeration value="UpperPlate"/>
|
||||
<xs:enumeration value="Cooling"/>
|
||||
<xs:enumeration value="Vacuum"/>
|
||||
<xs:enumeration value="Extraction"/>
|
||||
<xs:enumeration value="Options"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- Language Type -->
|
||||
<xs:complexType name="langType">
|
||||
<xs:simpleContent>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:element name="recipe">
|
||||
<!-- Heads -->
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<!-- Heads -->
|
||||
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
|
||||
@@ -1,64 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<serverConfig>
|
||||
<ncConfig>
|
||||
<ncVendor>S7NET</ncVendor> <!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
||||
<showNcHMI>false</showNcHMI>
|
||||
<ncIpAddress>192.168.0.102</ncIpAddress>
|
||||
<ncPort>102</ncPort>
|
||||
<machineModel>Thermo 2020</machineModel>
|
||||
<sharedPath>C:\PartPrg\</sharedPath>
|
||||
<sharedName>//PARTPRG:/</sharedName>
|
||||
<installationDate>01/06/2020</installationDate>
|
||||
<mgiOption>false</mgiOption>
|
||||
<siemensKeyboardOption>false</siemensKeyboardOption>
|
||||
<machineNumberHasLetters>false</machineNumberHasLetters>
|
||||
</ncConfig>
|
||||
<softwareProdConfig>
|
||||
<enabled>false</enabled>
|
||||
<path>C:\Program Files\Notepad++\notepad++.exe</path>
|
||||
</softwareProdConfig>
|
||||
<serverConfig>
|
||||
<serverPort>9000</serverPort>
|
||||
<serverAddress>*</serverAddress>
|
||||
<language>en</language>
|
||||
<enableDirectoryBrowsing>true</enableDirectoryBrowsing>
|
||||
<databaseAddress>localhost</databaseAddress>
|
||||
<autoOpenCmsClient>false</autoOpenCmsClient>
|
||||
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
|
||||
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
|
||||
<MTCApplicationName>SCMA</MTCApplicationName>
|
||||
<CMSConnectReady>false</CMSConnectReady>
|
||||
<maxAlarmsRows>50000</maxAlarmsRows>
|
||||
<alarmToDelete>5000</alarmToDelete>
|
||||
</serverConfig>
|
||||
<extSoftwares>
|
||||
<software>
|
||||
<longName>Calculator</longName>
|
||||
<shortName>CAL</shortName>
|
||||
<path>C:\Windows\System32\calc.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>true</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>NotePad</longName>
|
||||
<shortName>NP</shortName>
|
||||
<path>C:\Windows\System32\notepad.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>true</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>MsPaint</longName>
|
||||
<shortName>PA</shortName>
|
||||
<path>C:\Windows\System32\mspaint.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>NotePad2</longName>
|
||||
<shortName>NP2</shortName>
|
||||
<path>C:\Windows\System32\notepad.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
<ncConfig>
|
||||
<ncVendor>S7NET</ncVendor>
|
||||
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
||||
<showNcHMI>false</showNcHMI>
|
||||
<ncIpAddress>192.168.0.102</ncIpAddress>
|
||||
<ncPort>102</ncPort>
|
||||
<machineModel>Thermo 2020</machineModel>
|
||||
<sharedPath>C:\CMS\Recipes\</sharedPath>
|
||||
<sharedName>//PARTPRG:/</sharedName>
|
||||
<installationDate>01/06/2020</installationDate>
|
||||
<mgiOption>false</mgiOption>
|
||||
<siemensKeyboardOption>false</siemensKeyboardOption>
|
||||
<machineNumberHasLetters>false</machineNumberHasLetters>
|
||||
</ncConfig>
|
||||
<softwareProdConfig>
|
||||
<enabled>false</enabled>
|
||||
<path>C:\Program Files\Notepad++\notepad++.exe</path>
|
||||
</softwareProdConfig>
|
||||
<serverConfig>
|
||||
<serverPort>9000</serverPort>
|
||||
<serverAddress>*</serverAddress>
|
||||
<language>en</language>
|
||||
<enableDirectoryBrowsing>true</enableDirectoryBrowsing>
|
||||
<databaseAddress>localhost</databaseAddress>
|
||||
<autoOpenCmsClient>false</autoOpenCmsClient>
|
||||
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
|
||||
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
|
||||
<MTCApplicationName>SCMA</MTCApplicationName>
|
||||
<CMSConnectReady>false</CMSConnectReady>
|
||||
<maxAlarmsRows>50000</maxAlarmsRows>
|
||||
<alarmToDelete>5000</alarmToDelete>
|
||||
</serverConfig>
|
||||
<extSoftwares>
|
||||
<software>
|
||||
<longName>Calculator</longName>
|
||||
<shortName>CAL</shortName>
|
||||
<path>C:\Windows\System32\calc.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>true</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>NotePad</longName>
|
||||
<shortName>NP</shortName>
|
||||
<path>C:\Windows\System32\notepad.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>true</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>MsPaint</longName>
|
||||
<shortName>PA</shortName>
|
||||
<path>C:\Windows\System32\mspaint.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
<software>
|
||||
<longName>NotePad2</longName>
|
||||
<shortName>NP2</shortName>
|
||||
<path>C:\Windows\System32\notepad.exe</path>
|
||||
<arguments></arguments>
|
||||
<inMainMenuBar>false</inMainMenuBar>
|
||||
</software>
|
||||
</extSoftwares>
|
||||
<additionalParameters>
|
||||
<entry>
|
||||
<key>warmerPlanSizeX</key>
|
||||
<value>1500</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>warmerPlanSizeY</key>
|
||||
<value>1200</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>resistSizeX</key>
|
||||
<value>250</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>resistSizeY</key>
|
||||
<value>60</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>warmerAutocompStartValue</key>
|
||||
<value>30</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>warmerAutocompStep</key>
|
||||
<value>5</value>
|
||||
</entry>
|
||||
</additionalParameters>
|
||||
<unitOfMeasures>
|
||||
<unitOfMeasure id="0" value="" />
|
||||
<unitOfMeasure id="1" value="%" />
|
||||
<unitOfMeasure id="2" value="mm" />
|
||||
<unitOfMeasure id="3" value="°C" />
|
||||
<unitOfMeasure id="4" value="Nm" />
|
||||
<unitOfMeasure id="5" value="Bar" />
|
||||
<unitOfMeasure id="6" value="mm/s" />
|
||||
<unitOfMeasure id="7" value="mm/10" />
|
||||
<unitOfMeasure id="8" value="Bar/10" />
|
||||
<unitOfMeasure id="9" value="°C/10" />
|
||||
<unitOfMeasure id="10" value="Nm/10" />
|
||||
</unitOfMeasures>
|
||||
<sampling>
|
||||
<thread name="alarms" value="200" />
|
||||
<thread name="axis" value="200" />
|
||||
<thread name="area" value="500" />
|
||||
<thread name="confReq" value="2000" />
|
||||
<thread name="expMan" value="30000" />
|
||||
<thread name="functionEnab" value="300" />
|
||||
<thread name="gauges" value="500" />
|
||||
<thread name="m154" value="500" />
|
||||
<thread name="mCommands" value="250" />
|
||||
<thread name="powerOn" value="500" />
|
||||
<thread name="prodCycle" value="1000" />
|
||||
<thread name="prodInfo" value="1000" />
|
||||
<thread name="prodPanel" value="1000" />
|
||||
<thread name="modules" value="200" />
|
||||
<thread name="recipe" value="400" />
|
||||
<thread name="scada" value="1000" />
|
||||
<thread name="statusCommand" value="250" />
|
||||
<thread name="userSK" value="250" />
|
||||
<thread name="warmers" value="1500" />
|
||||
<thread name="watchdog" value="250" />
|
||||
</sampling>
|
||||
</serverConfig>
|
||||
@@ -63,10 +63,61 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="additionalParameters" >
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="key" type="xs:string" />
|
||||
<xs:element name="value" type="xs:string" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="unitOfMeasures">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="unitOfMeasure" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="umType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="sampling" >
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="thread" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="sampleType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="umType">
|
||||
<xs:attribute name="id" type="xs:integer" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="value" type="xs:string" use="required">
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="sampleType">
|
||||
<xs:attribute name="name" type="xs:string" use="required">
|
||||
</xs:attribute>
|
||||
<xs:attribute name="value" type="xs:integer" use="required">
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="ncType" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEMO" />
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<userSoftKeys>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>1</plcId>
|
||||
@@ -17,7 +17,7 @@
|
||||
<active>true</active>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>2</plcId>
|
||||
<plcId>1</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Refresh alarms</lang>
|
||||
<lang langKey="it">Refresh allarmi</lang>
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>3</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>3</plcId>
|
||||
<localizedNames>
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>4</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>4</plcId>
|
||||
<localizedNames>
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>5</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>5</plcId>
|
||||
<localizedNames>
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>6</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>6</plcId>
|
||||
<localizedNames>
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>7</plcId>
|
||||
<localizedNames>
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>8</plcId>
|
||||
<localizedNames>
|
||||
@@ -110,13 +110,26 @@
|
||||
<lang langKey="it">Pompe vuoto</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<starred>true</starred>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>10</category>
|
||||
<category>1</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>10</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Last cycle</lang>
|
||||
<lang langKey="it">Ultimo ciclo</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>10</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>11</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">START Cycle</lang>
|
||||
<lang langKey="it">START Ciclo</lang>
|
||||
@@ -126,43 +139,43 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>12</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Reset hours pump 1</lang>
|
||||
<lang langKey="it">Reset contaore pompa 1</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>13</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Reset hours pump 2</lang>
|
||||
<lang langKey="it">Reset contaore pompa 2</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>14</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Reset hours pump 3</lang>
|
||||
<lang langKey="it">Reset contaore pompa 3</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<visible>false</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>15</plcId>
|
||||
<localizedNames>
|
||||
@@ -174,7 +187,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>4</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>16</plcId>
|
||||
<localizedNames>
|
||||
@@ -186,7 +199,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>4</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>17</plcId>
|
||||
<localizedNames>
|
||||
@@ -198,7 +211,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>4</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>18</plcId>
|
||||
<localizedNames>
|
||||
@@ -210,7 +223,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>19</plcId>
|
||||
<localizedNames>
|
||||
@@ -222,7 +235,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>20</plcId>
|
||||
<localizedNames>
|
||||
@@ -234,7 +247,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>21</plcId>
|
||||
<localizedNames>
|
||||
@@ -246,7 +259,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
|
||||
<plcId>22</plcId>
|
||||
<localizedNames>
|
||||
@@ -254,11 +267,13 @@
|
||||
<lang langKey="it">Ventose setup</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>cycle_loader_enable</refCallParam>
|
||||
<refCallLabel>cycle_loader_enable_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>23</plcId>
|
||||
<localizedNames>
|
||||
@@ -270,7 +285,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>24</plcId>
|
||||
<localizedNames>
|
||||
@@ -282,7 +297,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>25</plcId>
|
||||
<localizedNames>
|
||||
@@ -294,7 +309,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>26</plcId>
|
||||
<localizedNames>
|
||||
@@ -306,7 +321,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>3</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>27</plcId>
|
||||
<localizedNames>
|
||||
@@ -318,7 +333,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>28</plcId>
|
||||
<localizedNames>
|
||||
@@ -330,7 +345,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>29</plcId>
|
||||
<localizedNames>
|
||||
@@ -342,12 +357,12 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>30</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Frame X</lang>
|
||||
<lang langKey="it">Apertura cornice</lang>
|
||||
<lang langKey="it">Larghezza cornice</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>general_sizes_frame_dim_x</refCallParam>
|
||||
@@ -356,7 +371,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>31</plcId>
|
||||
<localizedNames>
|
||||
@@ -370,7 +385,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>32</plcId>
|
||||
<localizedNames>
|
||||
@@ -384,7 +399,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>33</plcId>
|
||||
<localizedNames>
|
||||
@@ -398,33 +413,21 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>7</category>
|
||||
<category>2</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>34</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Preheating cycles</lang>
|
||||
<lang langKey="it">Cicli di preriscaldo</lang>
|
||||
<lang langKey="en">Windowplate Up</lang>
|
||||
<lang langKey="it">Piastrafinestra su</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
</softKey_procedure>
|
||||
|
||||
<softKey_procedure>
|
||||
<active>false</active>
|
||||
<category>7</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>35</plcId>
|
||||
<localizedNames>
|
||||
<lang langKey="en">Loader Cycle Start</lang>
|
||||
<lang langKey="it">Start Ciclo Caricatore</lang>
|
||||
</localizedNames>
|
||||
<visible>true</visible>
|
||||
<refCallParam>cycle_loader_enable</refCallParam>
|
||||
<refCallLabel>cycle_loader_enable_button</refCallLabel>
|
||||
</softKey_procedure>
|
||||
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>7</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>36</plcId>
|
||||
<localizedNames>
|
||||
@@ -438,7 +441,7 @@
|
||||
|
||||
<softKey_procedure>
|
||||
<active>true</active>
|
||||
<category>1</category>
|
||||
<category>7</category>
|
||||
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
|
||||
<plcId>37</plcId>
|
||||
<localizedNames>
|
||||
|
||||
@@ -11,6 +11,9 @@ namespace Thermo.Active.Config
|
||||
public static ServerConfigModel ServerStartupConfig;
|
||||
public static NcConfigModel NcConfig;
|
||||
public static List<ExtSoftwareModel> ExtSoftwaresConfig;
|
||||
public static Dictionary<string, string> AdditionalParametersConfig;
|
||||
public static Dictionary<int, string> UnitMeasuresConfig;
|
||||
public static Dictionary<string, int> ThreadSamplingConfig;
|
||||
public static SoftwareProdConfigModel SoftwareProdConfig;
|
||||
public static MachineModel MachineConfig;
|
||||
public static List<MaintenanceConfigModel> MaintenancesConfig;
|
||||
@@ -51,10 +54,9 @@ namespace Thermo.Active.Config
|
||||
public static List<ScadaSchemaModel> SubscribedScada = new List<ScadaSchemaModel>();
|
||||
|
||||
public static List<string> MacrosConfig;
|
||||
|
||||
public static List<InputOperatorConfigModel> InputsOperatorConfig;
|
||||
public static string CMSMainProgramContent;
|
||||
|
||||
|
||||
// Thermo
|
||||
public static List<ThermoProdConfigModel> ThermoProdConfig;
|
||||
public static List<RecipeConfigModel> RecipeConfig;
|
||||
@@ -62,6 +64,7 @@ namespace Thermo.Active.Config
|
||||
public static List<RiskResistModel> RiskResistConfig;
|
||||
public static List<RiskChannelModel> RiskChannelConfig;
|
||||
public static List<RiskBoardModel> RiskBoardConfig;
|
||||
public static List<AxesConfigModel> AxesConfig;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -38,9 +38,11 @@ namespace Thermo.Active.Config
|
||||
ReadRecipeConfig();
|
||||
ReadModBlockConfig();
|
||||
ReadRiskConfig();
|
||||
ReadAxesConfig();
|
||||
// ReadCMSConnectConfig();
|
||||
ReadMacros();
|
||||
ReadScadaFile();
|
||||
ReadM156();
|
||||
}
|
||||
catch (XmlException ex)
|
||||
{
|
||||
@@ -254,6 +256,49 @@ namespace Thermo.Active.Config
|
||||
}
|
||||
}
|
||||
|
||||
private static void ReadM156()
|
||||
{
|
||||
// Get Areas file handler
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(M156_CONFIG_SCHEMA_PATH, M156_CONFIG_PATH);
|
||||
|
||||
InputsOperatorConfig = xmlConfigFile
|
||||
.Descendants("inputsOperator")
|
||||
.Elements()
|
||||
.Select(x => new InputOperatorConfigModel()
|
||||
{
|
||||
Id = Convert.ToInt32(x.Element("id").Value),
|
||||
Messages = x.Element("title").Elements().ToDictionary( // Read localized names and convert into a dictionary
|
||||
y => y.Attribute("langKey").Value, y => y.Value
|
||||
),
|
||||
Buttons = x.Element("buttons")?.Elements().ToDictionary( // Read buttons data and convert into a dictionary
|
||||
y => Convert.ToByte(y.Element("value").Value),
|
||||
y => y.Element("title").Elements().ToDictionary( // Read localized names and convert into a dictionary
|
||||
z => z.Attribute("langKey").Value,
|
||||
z => z.Value
|
||||
)
|
||||
),
|
||||
Type = GetInputOperatoType(x.Name.ToString())
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
|
||||
|
||||
public static string GetInputOperatoType(string tagName)
|
||||
{
|
||||
switch (tagName)
|
||||
{
|
||||
case "modalValue":
|
||||
return "REAL";
|
||||
case "buttonsListModal":
|
||||
return "MULTIPLE_BUTTONS";
|
||||
case "showValModal":
|
||||
return "SHOW_VAL";
|
||||
case "simpleModal":
|
||||
return "MODAL";
|
||||
default:
|
||||
return "REAL";
|
||||
}
|
||||
}
|
||||
|
||||
#region Read config from file from configuration
|
||||
|
||||
@@ -326,6 +371,27 @@ namespace Thermo.Active.Config
|
||||
InMainMenuBar = Convert.ToBoolean(x.Element("inMainMenuBar").Value),
|
||||
Id = softwareId++.ToString()
|
||||
}).ToList();
|
||||
|
||||
// carico additionals parameters
|
||||
AdditionalParametersConfig = xmlConfigFile
|
||||
.Descendants("additionalParameters")
|
||||
.Elements("entry")
|
||||
.Select(x => new KeyValuePair<string,string>(x.Element("key").Value,x.Element("value").Value))
|
||||
.ToDictionary(x => x.Key, x => x.Value);
|
||||
|
||||
// carico unità di misura...
|
||||
UnitMeasuresConfig = xmlConfigFile
|
||||
.Descendants("unitOfMeasures")
|
||||
.Elements("unitOfMeasure")
|
||||
.Select(x => new KeyValuePair<int, string>(Convert.ToInt32(x.Attribute("id").Value), x.Attribute("value").Value))
|
||||
.ToDictionary(x => x.Key, x => x.Value);
|
||||
|
||||
// carico conf periodi thread...
|
||||
ThreadSamplingConfig = xmlConfigFile
|
||||
.Descendants("sampling")
|
||||
.Elements("thread")
|
||||
.Select(x => new KeyValuePair<string, int>(x.Attribute("name").Value, Convert.ToInt32(x.Attribute("value").Value)))
|
||||
.ToDictionary(x => x.Key, x => x.Value);
|
||||
}
|
||||
|
||||
private static void ReadAreaConfig()
|
||||
@@ -628,7 +694,6 @@ namespace Thermo.Active.Config
|
||||
NumDec = Convert.ToInt32(x.Element("numDec").Value),
|
||||
MinVal = Convert.ToInt32(x.Element("minVal").Value),
|
||||
MaxVal = Convert.ToInt32(x.Element("maxVal").Value),
|
||||
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
@@ -654,7 +719,10 @@ namespace Thermo.Active.Config
|
||||
Priority = Convert.ToInt16(x.Element("priority").Value),
|
||||
// attributi presi da default se NON presenti...
|
||||
ScaleFactor = x.Element("scaleFactor") != null ? Convert.ToInt16(x.Element("scaleFactor").Value) : 1000,
|
||||
NumDec = x.Element("numDec") != null ? Convert.ToInt16(x.Element("numDec").Value) : 1
|
||||
NumDec = x.Element("numDec") != null ? Convert.ToInt16(x.Element("numDec").Value) : 1,
|
||||
Category = x.Element("category") != null ? x.Element("category").Value : "",
|
||||
SubCategory_1 = x.Element("subCategory_1") != null ? x.Element("subCategory_1").Value : "",
|
||||
SubCategory_2 = x.Element("subCategory_2") != null ? x.Element("subCategory_2").Value : ""
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
@@ -807,6 +875,25 @@ namespace Thermo.Active.Config
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Axes config setup from file
|
||||
/// </summary>
|
||||
private static void ReadAxesConfig()
|
||||
{
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(AXES_CONFIG_SCHEMA_PATH, AXES_CONFIG_PATH);
|
||||
|
||||
// Read head config from XML file
|
||||
AxesConfig = xmlConfigFile
|
||||
.Root
|
||||
.Elements()
|
||||
.Select(x => new AxesConfigModel()
|
||||
{
|
||||
Id = Convert.ToInt16(x.Attribute("id").Value),
|
||||
Name = x.Attribute("name").Value,
|
||||
Type = GetTActAxes_Type(x.Attribute("type").Value)
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
private static void ReadCMSConnectConfig()
|
||||
{
|
||||
String _tempUSR, _tempPSW;
|
||||
|
||||
@@ -51,6 +51,9 @@
|
||||
<Content Include="Config\axesConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\inputOperatorConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\macrosConfig.xml">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
@@ -200,6 +203,14 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Config\inputOperatorConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Config\axesConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<None Include="Config\Recipes\template.tpl">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
||||
@@ -15,6 +15,7 @@ using Thermo.Active.Database.Controllers;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.Model.DTOModels.AlarmModels;
|
||||
using Thermo.Active.Model.DTOModels.Scada;
|
||||
using Thermo.Active.Model.DTOModels.ThAxes;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Model.DTOModels.ThProd;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
@@ -28,6 +29,7 @@ using static Thermo.Active.Utils.ExceptionManager;
|
||||
|
||||
public static class ThreadsFunctions
|
||||
{
|
||||
public static int axisRtCounter = 0;
|
||||
public static int recipeRtCounter = 0;
|
||||
public static int modulesRtCounter = 0;
|
||||
public static bool reconnectionIsRunning = false;
|
||||
@@ -36,6 +38,20 @@ public static class ThreadsFunctions
|
||||
private static ConcurrentDictionary<string, long> Counter = new ConcurrentDictionary<string, long>();
|
||||
|
||||
private static Thread ConnThread;
|
||||
/// <summary>
|
||||
/// restituisce il periodo di campionamento SE configurato, altrimenti 1000 ms
|
||||
/// </summary>
|
||||
/// <param name="threadName"></param>
|
||||
/// <returns></returns>
|
||||
private static int samplMsec(string threadName)
|
||||
{
|
||||
int answ = 500;
|
||||
if (ThreadSamplingConfig.ContainsKey(threadName))
|
||||
{
|
||||
answ = ThreadSamplingConfig[threadName];
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
#region Functions
|
||||
|
||||
@@ -76,7 +92,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("watchdog"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
@@ -84,7 +100,6 @@ public static class ThreadsFunctions
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Manage status/command words for actions
|
||||
/// </summary>
|
||||
@@ -117,7 +132,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(250, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("statusCommand"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
@@ -125,7 +140,6 @@ public static class ThreadsFunctions
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Manage action for conf request
|
||||
/// </summary>
|
||||
@@ -160,49 +174,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(2000, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Manage action for conf request
|
||||
/// </summary>
|
||||
public static void ManageProdUpdate()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
//// Manage status command
|
||||
//libraryError = ncAdapter.ManageProdUpdate();
|
||||
//if (libraryError.errorCode != 0)
|
||||
// ManageLibraryError(libraryError);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(1000, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("confReq"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
@@ -245,7 +217,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("alarms"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -286,7 +258,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(400, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("powerOn"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -374,7 +346,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("functionEnab"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -425,7 +397,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(30000);
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("expMan"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -472,7 +444,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("userSK"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -480,7 +452,10 @@ public static class ThreadsFunctions
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadAxesNamesData()
|
||||
/// <summary>
|
||||
/// Lettura valori ASSI (tutti i disponibili)
|
||||
/// </summary>
|
||||
public static void ReadAxisInfoData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
@@ -494,17 +469,23 @@ public static class ThreadsFunctions
|
||||
|
||||
while (true)
|
||||
{
|
||||
// ogni n counter leggo anche dati NON RT
|
||||
axisRtCounter--;
|
||||
bool onlyRt = axisRtCounter > 0;
|
||||
//check reset...
|
||||
axisRtCounter = axisRtCounter < 0 ? 4 : axisRtCounter;
|
||||
|
||||
sw.Restart();
|
||||
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get Data from config and PLC
|
||||
libraryError = ncAdapter.ReadAxisData(out List<DTOAxisNameModel> axes);
|
||||
libraryError = ncAdapter.ReadAxisData(onlyRt, out Dictionary<int, DTOAxisInfoModel> axisData);
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_AXIS_NAMES_DATA, null, axes);
|
||||
MessageServices.Current.Publish(SEND_AXIS_INFO, null, axisData);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
@@ -515,50 +496,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(800, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadAxesPositionsData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get Data from NC
|
||||
libraryError = ncAdapter.GetAxesPositionsBySelectedProcess(out DTOAxesModel axesPositions);
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_AXES, null, axesPositions);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(100, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("axis"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -602,7 +540,7 @@ public static class ThreadsFunctions
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("scada"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -645,7 +583,7 @@ public static class ThreadsFunctions
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("gauges"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -687,7 +625,7 @@ public static class ThreadsFunctions
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait 500 ms
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("prodPanel"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -729,7 +667,7 @@ public static class ThreadsFunctions
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("prodInfo"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -771,7 +709,7 @@ public static class ThreadsFunctions
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("prodCycle"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -810,8 +748,6 @@ public static class ThreadsFunctions
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_RECIPE_FULL, null, currRecipe);
|
||||
|
||||
// FIXME TODO verificare come ridurre chiamate
|
||||
|
||||
// ora gestisco la overview!
|
||||
libraryError = ncAdapter.GetRecipeOverview(out Dictionary<RecipeSection, RecipeCatStatus> currOverview);
|
||||
if (libraryError.IsError())
|
||||
@@ -819,6 +755,14 @@ public static class ThreadsFunctions
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_RECIPE_OVERWIEW, null, currOverview);
|
||||
|
||||
// ora gestisco la lettura della overview di "modificata
|
||||
DTORecipeStatus message = new DTORecipeStatus()
|
||||
{
|
||||
recipeName = NcAdapter.RecipeLiveData.RecipeName,
|
||||
hasChanged = NcAdapter.RecipeLiveData.hasChanged
|
||||
};
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
@@ -828,7 +772,7 @@ public static class ThreadsFunctions
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("recipe"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -869,7 +813,7 @@ public static class ThreadsFunctions
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(1800, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("warmers"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -910,7 +854,7 @@ public static class ThreadsFunctions
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("area"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -951,7 +895,53 @@ public static class ThreadsFunctions
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(250, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("modules"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadMComandsData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// solo x S7Net...
|
||||
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
|
||||
{
|
||||
libraryError = ncAdapter.GetM156Data(out List<DTOM156InputModel> m156Data);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
else
|
||||
MessageServices.Current.Publish(SEND_M156_DATA, null, m156Data);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("mCommands"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -1125,7 +1115,7 @@ public static class ThreadsFunctions
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
Thread.Sleep(CalcSleepTime(samplMsec("m154"), (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -1133,8 +1123,6 @@ public static class ThreadsFunctions
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void SetupCmsConnect()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
|
||||
@@ -16,13 +16,11 @@ namespace Thermo.Active.Core
|
||||
ThreadsFunctions.ReadAlarms,
|
||||
ThreadsFunctions.ReadPowerOnData,
|
||||
ThreadsFunctions.StatThread,
|
||||
ThreadsFunctions.ReadProcessesPPStatus,
|
||||
//ThreadsFunctions.ReadProcessesPPStatus,
|
||||
ThreadsFunctions.ReadEnabledFunctionality,
|
||||
ThreadsFunctions.ReadExpiredMaintenances,
|
||||
//ThreadsFunctions.ReadAxesPositionsData,
|
||||
ThreadsFunctions.ReadUserSoftKeysData,
|
||||
//ThreadsFunctions.ReadHeadsData,
|
||||
//ThreadsFunctions.ReadAxesNamesData,
|
||||
//ThreadsFunctions.ReadActiveProgramData,
|
||||
//ThreadsFunctions.ReadPartProgramQueueData,
|
||||
// ThreadsFunctions.ReadNcSoftKeysData,
|
||||
@@ -35,7 +33,10 @@ namespace Thermo.Active.Core
|
||||
ThreadsFunctions.ReadAreaData,
|
||||
ThreadsFunctions.ReadModulesData,
|
||||
ThreadsFunctions.ReadScadaData,
|
||||
ThreadsFunctions.ReadMComandsData,
|
||||
ThreadsFunctions.ReadAxisInfoData,
|
||||
ThreadsFunctions.ReadM154Data // levare?
|
||||
|
||||
};
|
||||
private static Action ThreadSetupCmsConnect = ThreadsFunctions.SetupCmsConnect;
|
||||
|
||||
|
||||
@@ -1,161 +1,192 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity.Migrations;
|
||||
using System.Linq;
|
||||
using Thermo.Active.Model.DatabaseModels;
|
||||
|
||||
namespace Thermo.Active.Database.Controllers
|
||||
{
|
||||
public class ProdInfoController : IDisposable
|
||||
public class ProdInfoController : IDisposable
|
||||
{
|
||||
private DatabaseContext dbCtx;
|
||||
|
||||
public ProdInfoController()
|
||||
{
|
||||
private DatabaseContext dbCtx;
|
||||
|
||||
public ProdInfoController()
|
||||
{
|
||||
// Initialize database context
|
||||
dbCtx = new DatabaseContext();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Clear database context
|
||||
dbCtx.Dispose();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get record by NumDone
|
||||
/// </summary>
|
||||
/// <param name="num"></param>
|
||||
/// <returns></returns>
|
||||
public ProdInfoModel FindByNumDone(int num)
|
||||
{
|
||||
return dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone == num)
|
||||
.SingleOrDefault();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get historical paginated data from DB (DESC ordered
|
||||
/// </summary>
|
||||
/// <param name="numStart"></param>
|
||||
/// <param name="numRecord"></param>
|
||||
/// <returns></returns>
|
||||
public List<ProdInfoModel> GetPaginated(int numStart, int numRecord)
|
||||
{
|
||||
// cehck numEnd
|
||||
int numEnd = numStart - numRecord;
|
||||
if (numEnd < 0)
|
||||
numEnd = 0;
|
||||
// retrieve
|
||||
return dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone <= numStart && x.NumDone > numEnd)
|
||||
.OrderByDescending(x => x.DtEvent)
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Create new prodInfo record on DB
|
||||
/// </summary>
|
||||
/// <param name="NumTarget"></param>
|
||||
/// <param name="NumDone"></param>
|
||||
/// <param name="TimeWarm"></param>
|
||||
/// <param name="TimeVent"></param>
|
||||
/// <param name="TimeVacuum"></param>
|
||||
/// <param name="TimeCycleGross"></param>
|
||||
/// <param name="TimeCycleNet"></param>
|
||||
/// <param name="MaterialTempEndWarm"></param>
|
||||
/// <param name="MaterialTempEndVent"></param>
|
||||
/// <param name="MoldTemp"></param>
|
||||
/// <param name="VacuumReadVal"></param>
|
||||
/// <param name="MouldEnergyOUT"></param>
|
||||
/// <param name="MouldEnergyIN"></param>
|
||||
/// <returns></returns>
|
||||
public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN)
|
||||
{
|
||||
// Create database machine model
|
||||
ProdInfoModel prodData = new ProdInfoModel()
|
||||
{
|
||||
DtEvent = DateTime.Now,
|
||||
NumTarget = NumTarget,
|
||||
NumDone = NumDone,
|
||||
TimeWarm = TimeWarm,
|
||||
TimeVent = TimeVent,
|
||||
TimeVacuum = TimeVacuum,
|
||||
TimeCycleGross = TimeCycleGross,
|
||||
TimeCycleNet = TimeCycleNet,
|
||||
MaterialTempEndWarm = MaterialTempEndWarm,
|
||||
MaterialTempEndVent = MaterialTempEndVent,
|
||||
MoldTemp = MoldTemp,
|
||||
VacuumReadVal = VacuumReadVal,
|
||||
MouldEnergyOUT = MouldEnergyOUT,
|
||||
MouldEnergyIN = MouldEnergyIN
|
||||
};
|
||||
try
|
||||
{
|
||||
// Add to database
|
||||
dbCtx.ProdInfo.Add(prodData);
|
||||
// Commit changes
|
||||
dbCtx.SaveChanges();
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
|
||||
return prodData;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process table and keep only maxKeep most recent ones
|
||||
/// </summary>
|
||||
/// <param name="maxKeep"></param>
|
||||
/// <returns></returns>
|
||||
public bool PurgeOldest(int maxKeep)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
// check if purge needed
|
||||
int numRec = dbCtx.ProdInfo.Count();
|
||||
if (numRec > maxKeep)
|
||||
{
|
||||
ProdInfoModel firstToDelete = (ProdInfoModel)(from p in dbCtx.ProdInfo
|
||||
orderby p.DtEvent descending
|
||||
select p).Skip(maxKeep).Take(1);
|
||||
|
||||
// call deletion
|
||||
dbCtx
|
||||
.ProdInfo
|
||||
.RemoveRange(
|
||||
dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.DtEvent <= firstToDelete.DtEvent)
|
||||
);
|
||||
|
||||
try
|
||||
{
|
||||
// save!
|
||||
dbCtx.SaveChanges();
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process table and delete all record (truncate)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool PurgeAll()
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
try
|
||||
{
|
||||
dbCtx
|
||||
.Database
|
||||
.ExecuteSqlCommand("TRUNCATE TABLE prodInfo");
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
// Initialize database context
|
||||
dbCtx = new DatabaseContext();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Clear database context
|
||||
dbCtx.Dispose();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get record by NumDone
|
||||
/// </summary>
|
||||
/// <param name="num"></param>
|
||||
/// <returns></returns>
|
||||
public ProdInfoModel FindByNumDone(int num)
|
||||
{
|
||||
return dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone == num)
|
||||
.SingleOrDefault();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get historical paginated data from DB (DESC ordered
|
||||
/// </summary>
|
||||
/// <param name="numStart"></param>
|
||||
/// <param name="numRecord"></param>
|
||||
/// <returns></returns>
|
||||
public List<ProdInfoModel> GetPaginated(int numStart, int numRecord)
|
||||
{
|
||||
// cehck numEnd
|
||||
int numEnd = numStart - numRecord;
|
||||
if (numEnd < 0)
|
||||
numEnd = 0;
|
||||
// retrieve
|
||||
return dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone <= numStart && x.NumDone > numEnd)
|
||||
.OrderByDescending(x => x.DtEvent)
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Create new prodInfo record on DB
|
||||
/// </summary>
|
||||
/// <param name="NumTarget"></param>
|
||||
/// <param name="NumDone"></param>
|
||||
/// <param name="TimeWarm"></param>
|
||||
/// <param name="TimeVent"></param>
|
||||
/// <param name="TimeVacuum"></param>
|
||||
/// <param name="TimeCycleGross"></param>
|
||||
/// <param name="TimeCycleNet"></param>
|
||||
/// <param name="MaterialTempEndWarm"></param>
|
||||
/// <param name="MaterialTempEndVent"></param>
|
||||
/// <param name="MoldTemp"></param>
|
||||
/// <param name="VacuumReadVal"></param>
|
||||
/// <param name="MouldEnergyOUT"></param>
|
||||
/// <param name="MouldEnergyIN"></param>
|
||||
/// <param name="IsScrap"></param>
|
||||
/// <returns></returns>
|
||||
public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN, bool IsScrap)
|
||||
{
|
||||
// Create database machine model
|
||||
ProdInfoModel prodData = new ProdInfoModel()
|
||||
{
|
||||
DtEvent = DateTime.Now,
|
||||
NumTarget = NumTarget,
|
||||
NumDone = NumDone,
|
||||
TimeWarm = TimeWarm,
|
||||
TimeVent = TimeVent,
|
||||
TimeVacuum = TimeVacuum,
|
||||
TimeCycleGross = TimeCycleGross,
|
||||
TimeCycleNet = TimeCycleNet,
|
||||
MaterialTempEndWarm = MaterialTempEndWarm,
|
||||
MaterialTempEndVent = MaterialTempEndVent,
|
||||
MoldTemp = MoldTemp,
|
||||
VacuumReadVal = VacuumReadVal,
|
||||
MouldEnergyOUT = MouldEnergyOUT,
|
||||
MouldEnergyIN = MouldEnergyIN,
|
||||
IsScrap = IsScrap
|
||||
};
|
||||
try
|
||||
{
|
||||
// Add to database
|
||||
dbCtx.ProdInfo.AddOrUpdate(prodData);
|
||||
//dbCtx.ProdInfo.Add(prodData);
|
||||
// Commit changes
|
||||
dbCtx.SaveChanges();
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
|
||||
return prodData;
|
||||
}
|
||||
/// <summary>
|
||||
/// Process table and set as scrap by num value
|
||||
/// </summary>
|
||||
/// <param name="maxKeep"></param>
|
||||
/// <returns></returns>
|
||||
public bool SetScrap(int num, bool isScrap)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
var currRecord = dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone == num)
|
||||
.SingleOrDefault();
|
||||
try
|
||||
{
|
||||
if (currRecord != null)
|
||||
{
|
||||
currRecord.IsScrap = isScrap;
|
||||
}
|
||||
// save!
|
||||
dbCtx.SaveChanges();
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process table and keep only maxKeep most recent ones
|
||||
/// </summary>
|
||||
/// <param name="maxKeep"></param>
|
||||
/// <returns></returns>
|
||||
public bool PurgeOldest(int maxKeep)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
// check if purge needed
|
||||
int numRec = dbCtx.ProdInfo.Count();
|
||||
if (numRec > maxKeep)
|
||||
{
|
||||
ProdInfoModel firstToDelete = (ProdInfoModel)(from p in dbCtx.ProdInfo
|
||||
orderby p.DtEvent descending
|
||||
select p).Skip(maxKeep).Take(1);
|
||||
|
||||
// call deletion
|
||||
dbCtx
|
||||
.ProdInfo
|
||||
.RemoveRange(
|
||||
dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.DtEvent <= firstToDelete.DtEvent)
|
||||
);
|
||||
|
||||
try
|
||||
{
|
||||
// save!
|
||||
dbCtx.SaveChanges();
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process table and delete all record (truncate)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool PurgeAll()
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
try
|
||||
{
|
||||
dbCtx
|
||||
.Database
|
||||
.ExecuteSqlCommand("TRUNCATE TABLE prodInfo");
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
// <auto-generated />
|
||||
namespace Thermo.Active.Database.Migrations
|
||||
{
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Data.Entity.Migrations;
|
||||
using System.Data.Entity.Migrations.Infrastructure;
|
||||
using System.Resources;
|
||||
|
||||
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
|
||||
public sealed partial class AddedScrapPartMgmt : IMigrationMetadata
|
||||
{
|
||||
private readonly ResourceManager Resources = new ResourceManager(typeof(AddedScrapPartMgmt));
|
||||
|
||||
string IMigrationMetadata.Id
|
||||
{
|
||||
get { return "202009021558544_AddedScrapPartMgmt"; }
|
||||
}
|
||||
|
||||
string IMigrationMetadata.Source
|
||||
{
|
||||
get { return null; }
|
||||
}
|
||||
|
||||
string IMigrationMetadata.Target
|
||||
{
|
||||
get { return Resources.GetString("Target"); }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace Thermo.Active.Database.Migrations
|
||||
{
|
||||
using System;
|
||||
using System.Data.Entity.Migrations;
|
||||
|
||||
public partial class AddedScrapPartMgmt : DbMigration
|
||||
{
|
||||
public override void Up()
|
||||
{
|
||||
AddColumn("dbo.ProdInfo", "IsScrap", c => c.Boolean(nullable: false));
|
||||
}
|
||||
|
||||
public override void Down()
|
||||
{
|
||||
DropColumn("dbo.ProdInfo", "IsScrap");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -131,6 +131,10 @@
|
||||
<Compile Include="Migrations\202006170558519_AddedProdInfoModel.Designer.cs">
|
||||
<DependentUpon>202006170558519_AddedProdInfoModel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Migrations\202009021558544_AddedScrapPartMgmt.cs" />
|
||||
<Compile Include="Migrations\202009021558544_AddedScrapPartMgmt.Designer.cs">
|
||||
<DependentUpon>202009021558544_AddedScrapPartMgmt.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Migrations\Configuration.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Redis\redUtil.cs" />
|
||||
@@ -173,6 +177,9 @@
|
||||
<EmbeddedResource Include="Migrations\202006170558519_AddedProdInfoModel.resx">
|
||||
<DependentUpon>202006170558519_AddedProdInfoModel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Migrations\202009021558544_AddedScrapPartMgmt.resx">
|
||||
<DependentUpon>202009021558544_AddedScrapPartMgmt.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Model.ConfigModels
|
||||
{
|
||||
public class AxesConfigModel
|
||||
{
|
||||
public int Id;
|
||||
public string Name { get; set; }
|
||||
public bool IsSelectable { get; set; } = true;
|
||||
public TACT_AXES_TYPE Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.ConfigModels
|
||||
{
|
||||
public class InputOperatorConfigModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public Dictionary<string, string> Messages { get; set; }
|
||||
public Dictionary<byte, Dictionary<string, string>> Buttons { get; set; }
|
||||
public string Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -14,5 +14,8 @@ namespace Thermo.Active.Model.ConfigModels
|
||||
public int Priority { get; set; }
|
||||
public int ScaleFactor { get; set; } = 1000;
|
||||
public int NumDec { get; set; } = 1;
|
||||
public string Category { get; set; }
|
||||
public string SubCategory_1 { get; set; }
|
||||
public string SubCategory_2 { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +102,12 @@ namespace Thermo.Active.Model
|
||||
COOLING,
|
||||
EXTRACTION
|
||||
}
|
||||
public enum TACT_AXES_TYPE
|
||||
{
|
||||
NA = 0,
|
||||
LINEAR,
|
||||
ROTATIONAL
|
||||
}
|
||||
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum TACT_PROD_CATEGORY
|
||||
@@ -222,9 +228,8 @@ namespace Thermo.Active.Model
|
||||
|
||||
public const int numRecProdPanelGraph = 30;
|
||||
public const string CONFIG_DIRECTORY = "Config\\";
|
||||
public const string RECIPE_DIRECTORY = "Recipes\\";
|
||||
public const string RECIPE_TEMPLATE_PATH = CONFIG_DIRECTORY + RECIPE_DIRECTORY + "template.tpl";
|
||||
public const string LIVE_RECIPE_PATH = TEMP_FOLDER + RECIPE_DIRECTORY + "current.rcp";
|
||||
public const string RECIPE_TEMPLATE_PATH = CONFIG_DIRECTORY + "Recipes\\template.tpl";
|
||||
public const string LIVE_RECIPE_PATH = TEMP_FOLDER + "Recipes\\current.rcp";
|
||||
public const string RESOURCE_DIRECTORY = @"Thermo.Active.Config.Config.";
|
||||
public const string SERVER_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"serverConfigValidator.xsd";
|
||||
public const string SERVER_CONFIG_PATH = CONFIG_DIRECTORY + "serverConfig.xml";
|
||||
@@ -232,6 +237,9 @@ namespace Thermo.Active.Model
|
||||
public const string AREAS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "areasConfigValidator.xsd";
|
||||
public const string AREAS_CONFIG_PATH = CONFIG_DIRECTORY + "areasConfig.xml";
|
||||
|
||||
public const string M156_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "inputOperatorConfigValidator.xsd";
|
||||
public const string M156_CONFIG_PATH = CONFIG_DIRECTORY + "inputOperatorConfig.xml";
|
||||
|
||||
public const string MAINTENANCES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "maintenancesConfigValidator.xsd";
|
||||
public const string CUSTOMER_CONTACTS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "customerContactConfigValidator.xsd";
|
||||
public const string MAINTENANCES_CONFIG_PATH = CONFIG_DIRECTORY + "maintenancesConfig.xml";
|
||||
@@ -270,6 +278,10 @@ namespace Thermo.Active.Model
|
||||
public const string MACROS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "macrosConfigValidator.xsd";
|
||||
public const string MACROS_CONFIG_PATH = CONFIG_DIRECTORY + "macrosConfig.xml";
|
||||
|
||||
|
||||
public const string AXES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"axesConfigValidator.xsd";
|
||||
public const string AXES_CONFIG_PATH = CONFIG_DIRECTORY + "axesConfig.xml";
|
||||
|
||||
public const string MAIN_PROGRAM_CONFIG_PATH = CONFIG_DIRECTORY + "customMainProgram.txt";
|
||||
|
||||
|
||||
@@ -298,22 +310,23 @@ namespace Thermo.Active.Model
|
||||
|
||||
public const string SEND_POWER_ON_DATA = "SEND_POWER_ON_DATA";
|
||||
public const string SEND_GENERIC_DATA = "SEND_GENERIC_DATA";
|
||||
public const string SEND_AXES = "SEND_AXES";
|
||||
public const string SEND_PROCESSES_DATA = "SEND_PROCESSES_STATUS";
|
||||
public const string SEND_FUNCTIONALITY_DATA = "SEND_FUNCTION_DATA";
|
||||
public const string SEND_EXPIRED_MAINTENANCES_DATA = "SEND_EXPIRED_MAINTENANCES_DATA";
|
||||
public const string SEND_USER_SOFTKEYS_DATA = "SEND_USER_SOFTKEYS_DATA";
|
||||
public const string SEND_NC_SOFTKEYS_DATA = "SEND_NC_SOFTKEYS_DATA";
|
||||
public const string SEND_HEADS_DATA = "SEND_HEADS_DATA";
|
||||
public const string SEND_AXIS_NAMES_DATA = "SEND_AXIS_NAMES_DATA";
|
||||
public const string SEND_AXIS_INFO = "SEND_AXIS_INFO";
|
||||
public const string SEND_ACTIVE_PROGRAM_DATA = "SEND_ACTIVE_PROGRAM_DATA";
|
||||
public const string SEND_QUEUE_DATA = "SEND_QUEUE_DATA";
|
||||
public const string SEND_M155_DATA = "SEND_M155_DATA";
|
||||
public const string SEND_M156_DATA = "SEND_M156_DATA";
|
||||
public const string SEND_SCADA_DATA = "SEND_SCADA_DATA";
|
||||
|
||||
// MVVM Messages for Thermo active specs
|
||||
public const string SEND_THERMO_RECIPE_FULL = "SEND_THERMO_RECIPE_FULL";
|
||||
public const string SEND_THERMO_RECIPE_OVERWIEW = "SEND_THERMO_RECIPE_OVERWIEW";
|
||||
public const string SEND_THERMO_RECIPE_CHANGED = "SEND_THERMO_RECIPE_CHANGED";
|
||||
public const string SEND_THERMO_MODULE_DATA = "SEND_THERMO_MODULE_DATA";
|
||||
public const string SEND_THERMO_WARMERS_DATA = "SEND_THERMO_WARMERS_DATA";
|
||||
public const string SEND_THERMO_AREA_DATA = "SEND_THERMO_AREA_DATA";
|
||||
@@ -378,7 +391,7 @@ namespace Thermo.Active.Model
|
||||
|
||||
public static readonly string[] VALID_FILE_EXTENSIONS = { "", ".txt", ".cnc", ".ini", ".mpf", ".spf" };
|
||||
public static readonly string[] VALID_IMAGE_EXTENSIONS = { ".jpg", ".jpeg", ".png", ".bmp", ".gif" };
|
||||
public const double EPSILON = 0.001;
|
||||
public const double EPSILON = 0.1;
|
||||
public static string QUEUE_FILE_NAME = "pp";
|
||||
public const string JOB_MAIN_FILENAME = "main.cnc";
|
||||
public const string JOB_METADATA_FILENAME = "metadata.json";
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels
|
||||
{
|
||||
public class DTOAxisNameModel : AxisModel
|
||||
{
|
||||
public new string Type;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
|
||||
// Object is not a DTOAxisNameModel instance
|
||||
if (!(obj is DTOAxisNameModel item))
|
||||
return false;
|
||||
|
||||
if (item.Id != Id)
|
||||
return false;
|
||||
|
||||
if (item.Name != Name)
|
||||
return false;
|
||||
|
||||
if (item.IsSelectable != IsSelectable)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ namespace Thermo.Active.Model.DTOModels
|
||||
public bool SiemensKeyboardOption { get; set; }
|
||||
|
||||
public List<ExtSoftwareModel> ExtSoftwares { get; set; }
|
||||
public Dictionary<string, string> AdditionalParameters { get; set; }
|
||||
|
||||
public CultureInfo DefaultLanguage
|
||||
{
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels
|
||||
{
|
||||
public class DTOM156InputModel : M156InputIsNeededModel
|
||||
{
|
||||
public Dictionary<byte, string> Buttons;
|
||||
public string Type;
|
||||
public bool isM156 = true;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is DTOM156InputModel item))
|
||||
return false;
|
||||
|
||||
if (Process != item.Process)
|
||||
return false;
|
||||
|
||||
if (Type != item.Type)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,7 +78,6 @@ namespace Thermo.Active.Model.DTOModels.Scada
|
||||
// Inputs = new List<DTOScadaInputModel>();
|
||||
// }
|
||||
//}
|
||||
|
||||
public class DTOScadaButtonModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThAxes
|
||||
{
|
||||
public class DTOAxisInfoModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Actual position
|
||||
/// </summary>
|
||||
public int ID { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Actual position
|
||||
/// </summary>
|
||||
public string name { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Type of axis
|
||||
/// </summary>
|
||||
public string type { get; set; } = "";
|
||||
/// <summary>
|
||||
/// Actual position
|
||||
/// </summary>
|
||||
public double position { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Actual Speed
|
||||
/// </summary>
|
||||
public double speed { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Actual Load
|
||||
/// </summary>
|
||||
public double load { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Error code (0=none)
|
||||
/// </summary>
|
||||
public int errorCode { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Movement
|
||||
/// </summary>
|
||||
public int movPhase { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Status Word
|
||||
/// </summary>
|
||||
public int statusCode { get; set; } = 0;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
// Object is not a GaugeModel instance
|
||||
if (!(obj is DTOAxisInfoModel item))
|
||||
return false;
|
||||
if (ID != item.ID)
|
||||
return false;
|
||||
if (name != item.name)
|
||||
return false;
|
||||
if (Math.Round(Math.Abs(position - item.position), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (Math.Round(Math.Abs(speed - item.speed), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (Math.Round(Math.Abs(load - item.load), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (errorCode != item.errorCode)
|
||||
return false;
|
||||
if (movPhase != item.movPhase)
|
||||
return false;
|
||||
if (statusCode != item.statusCode)
|
||||
return false;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if false
|
||||
private bool CheckDictInt(IDictionary<string, int> x, IDictionary<string, int> y)
|
||||
{
|
||||
// early-exit checks
|
||||
if (y == null)
|
||||
return x == null;
|
||||
if (x == null)
|
||||
return false;
|
||||
|
||||
if (x.Count != y.Count)
|
||||
return false;
|
||||
|
||||
// Check keys are the same
|
||||
foreach (string k in x.Keys)
|
||||
if (!y.ContainsKey(k))
|
||||
return false;
|
||||
|
||||
// Check values are different
|
||||
foreach (string k in x.Keys)
|
||||
{
|
||||
if (y[k] != x[k])
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public bool CheckDictDouble(IDictionary<string, double> x, IDictionary<string, double> y)
|
||||
{
|
||||
// early-exit checks
|
||||
if (y == null)
|
||||
return x == null;
|
||||
if (x == null)
|
||||
return false;
|
||||
|
||||
if (x.Count != y.Count)
|
||||
return false;
|
||||
|
||||
// Check keys are the same
|
||||
foreach (string k in x.Keys)
|
||||
if (!y.ContainsKey(k))
|
||||
return false;
|
||||
|
||||
// Check values are different
|
||||
foreach (string k in x.Keys)
|
||||
{
|
||||
double a = Math.Abs(y[k] - x[k]);
|
||||
|
||||
if (Math.Round(a, 3) >= Constants.EPSILON)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
@@ -24,6 +25,9 @@ namespace Thermo.Active.Model.DTOModels.ThModules
|
||||
public bool Running { get; set; } = false;
|
||||
public bool HasError { get; set; } = false;
|
||||
public bool Terminated { get; set; } = false;
|
||||
public string Category { get; set; } = "";
|
||||
public string SubCategory_1 { get; set; } = "";
|
||||
public string SubCategory_2 { get; set; } = "";
|
||||
|
||||
|
||||
public override bool Equals(object obj)
|
||||
@@ -49,13 +53,13 @@ namespace Thermo.Active.Model.DTOModels.ThModules
|
||||
return false;
|
||||
if (NumDec != item.NumDec)
|
||||
return false;
|
||||
if (ActualDelay != item.ActualDelay)
|
||||
if (Math.Round(Math.Abs(ActualDelay - item.ActualDelay), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (ActualDuration != item.ActualDuration)
|
||||
if (Math.Round(Math.Abs(ActualDuration - item.ActualDuration), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (EstimatedDelay != item.EstimatedDelay)
|
||||
if (Math.Round(Math.Abs(EstimatedDelay - item.EstimatedDelay), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (EstimatedDuration != item.EstimatedDuration)
|
||||
if (Math.Round(Math.Abs(EstimatedDuration - item.EstimatedDuration), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (!Enumerable.SequenceEqual(PrecedingId, item.PrecedingId))
|
||||
return false;
|
||||
@@ -67,6 +71,12 @@ namespace Thermo.Active.Model.DTOModels.ThModules
|
||||
return false;
|
||||
if (Terminated != item.Terminated)
|
||||
return false;
|
||||
if (Category != item.Category)
|
||||
return false;
|
||||
if (SubCategory_1 != item.SubCategory_1)
|
||||
return false;
|
||||
if (SubCategory_2 != item.SubCategory_2)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd
|
||||
public double VacuumReadVal { get; set; } = 0;
|
||||
public double MouldEnergyOUT { get; set; } = 0;
|
||||
public double MouldEnergyIN { get; set; } = 0;
|
||||
public bool IsScrap { get; set; } = false;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
@@ -38,27 +39,29 @@ namespace Thermo.Active.Model.DTOModels.ThProd
|
||||
return false;
|
||||
if (NumDone != item.NumDone)
|
||||
return false;
|
||||
if (TimeWarm != item.TimeWarm)
|
||||
if (Math.Round(Math.Abs(TimeWarm - item.TimeWarm), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (TimeVent != item.TimeVent)
|
||||
if (Math.Round(Math.Abs(TimeVent - item.TimeVent), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (TimeVacuum != item.TimeVacuum)
|
||||
if (Math.Round(Math.Abs(TimeVacuum - item.TimeVacuum), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (TimeCycleGross != item.TimeCycleGross)
|
||||
if (Math.Round(Math.Abs(TimeCycleGross - item.TimeCycleGross), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (TimeCycleNet != item.TimeCycleNet)
|
||||
if (Math.Round(Math.Abs(TimeCycleNet - item.TimeCycleNet), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (MaterialTempEndWarm != item.MaterialTempEndWarm)
|
||||
if (Math.Round(Math.Abs(MaterialTempEndWarm - item.MaterialTempEndWarm), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (MaterialTempEndVent != item.MaterialTempEndVent)
|
||||
if (Math.Round(Math.Abs(MaterialTempEndVent - item.MaterialTempEndVent), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (MoldTemp != item.MoldTemp)
|
||||
if (Math.Round(Math.Abs(MoldTemp - item.MoldTemp), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (VacuumReadVal != item.VacuumReadVal)
|
||||
if (Math.Round(Math.Abs(VacuumReadVal - item.VacuumReadVal), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (MouldEnergyOUT != item.MouldEnergyOUT)
|
||||
if (Math.Round(Math.Abs(MouldEnergyOUT - item.MouldEnergyOUT), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (MouldEnergyIN != item.MouldEnergyIN)
|
||||
if (Math.Round(Math.Abs(MouldEnergyIN - item.MouldEnergyIN), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (IsScrap != item.IsScrap)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -88,6 +91,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd
|
||||
this.VacuumReadVal = pimRawData.VacuumReadVal;
|
||||
this.MouldEnergyIN = pimRawData.MouldEnergyIN;
|
||||
this.MouldEnergyOUT = pimRawData.MouldEnergyOUT;
|
||||
this.IsScrap = pimRawData.IsScrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,17 +30,17 @@ namespace Thermo.Active.Model.DTOModels.ThProd
|
||||
return false;
|
||||
if (InizioProd != item.InizioProd)
|
||||
return false;
|
||||
if (StimaDurata != item.StimaDurata)
|
||||
if (Math.Round(Math.Abs(StimaDurata - item.StimaDurata), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (TempAct != item.TempAct)
|
||||
if (Math.Round(Math.Abs(TempAct - item.TempAct), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (TempSetpoint != item.TempSetpoint)
|
||||
if (Math.Round(Math.Abs(TempSetpoint - item.TempSetpoint), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (NomeRicetta != item.NomeRicetta)
|
||||
return false;
|
||||
if (LastCadenza != item.LastCadenza)
|
||||
if (Math.Round(Math.Abs(LastCadenza - item.LastCadenza), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (LastTCiclo != item.LastTCiclo)
|
||||
if (Math.Round(Math.Abs(LastTCiclo - item.LastTCiclo), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (!Enumerable.SequenceEqual(TS_Cadenza, item.TS_Cadenza))
|
||||
return false;
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd
|
||||
|
||||
if (!Category.Equals(item.Category))
|
||||
return false;
|
||||
if (Value != item.Value)
|
||||
if (Math.Round(Math.Abs(Value - item.Value), 1) >= Constants.EPSILON)
|
||||
return false;
|
||||
if (Name != item.Name)
|
||||
return false;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThRecipe
|
||||
{
|
||||
public class DTORecipeStatus
|
||||
{
|
||||
public string recipeName { get; set; } = "";
|
||||
public bool hasChanged { get; set; } = false;
|
||||
public bool forceSend { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,10 @@ namespace Thermo.Active.Model.DTOModels.ThRecipe
|
||||
/// </summary>
|
||||
public string RecipeName = "current.json";
|
||||
/// <summary>
|
||||
/// Current DIR of loaded recipe
|
||||
/// </summary>
|
||||
public string RecipeDir = "";
|
||||
/// <summary>
|
||||
/// User that made last save
|
||||
/// </summary>
|
||||
public string UserSave = "";
|
||||
@@ -35,7 +39,9 @@ namespace Thermo.Active.Model.DTOModels.ThRecipe
|
||||
/// Note ricetta
|
||||
/// </summary>
|
||||
public string recipeNotes = "";
|
||||
/// <summary>
|
||||
/// Verifica se sia cambiata da versione letta
|
||||
/// </summary>
|
||||
public bool hasChanged = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ namespace Thermo.Active.Model.DatabaseModels
|
||||
public double MouldEnergyOUT { get; set; }
|
||||
[Column("MouldEnergyIN")]
|
||||
public double MouldEnergyIN { get; set; }
|
||||
[Column("IsScrap")]
|
||||
public bool IsScrap { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
<Compile Include="ConfigModels\AlarmsConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\CmsConnectConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\ExtSoftwareModel.cs" />
|
||||
<Compile Include="ConfigModels\InputOperatorConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\AxesConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\ThermoProdConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\ModBlockConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\RiskConfigModel.cs" />
|
||||
@@ -104,12 +106,14 @@
|
||||
<Compile Include="DTOModels\AlarmModels\DTOAlarmHistoricModel.cs" />
|
||||
<Compile Include="DTOModels\AlarmModels\DTOAlarmsModel.cs" />
|
||||
<Compile Include="DTOModels\DTOAxesModel.cs" />
|
||||
<Compile Include="DTOModels\DTOAxisNameModel.cs" />
|
||||
<Compile Include="DTOModels\DTOClientConfigurationModel.cs" />
|
||||
<Compile Include="DTOModels\DTOM156InputModel.cs" />
|
||||
<Compile Include="DTOModels\ThAxes\DTOAxisInfoModel.cs" />
|
||||
<Compile Include="DTOModels\ThModules\DTOModulesBlock.cs" />
|
||||
<Compile Include="DTOModels\ThProd\DTOProdInfo.cs" />
|
||||
<Compile Include="DTOModels\ThProd\DTOThermoPanelProd.cs" />
|
||||
<Compile Include="DTOModels\ThProd\DTOThermoProd.cs" />
|
||||
<Compile Include="DTOModels\ThRecipe\DTORecipeStatus.cs" />
|
||||
<Compile Include="DTOModels\ThRecipe\LiveData.cs" />
|
||||
<Compile Include="DTOModels\ThWarmers\DTOWarmers.cs" />
|
||||
<Compile Include="DTOModels\ThRecipe\DTORecipeParam.cs" />
|
||||
|
||||
@@ -611,7 +611,9 @@ namespace Thermo.Active.NC
|
||||
{
|
||||
try
|
||||
{
|
||||
ReadLiveData();
|
||||
RecipeLiveData = readLiveData();
|
||||
// salva current
|
||||
SaveRecipeCurrent();
|
||||
}
|
||||
catch (XmlException ex)
|
||||
{
|
||||
@@ -632,9 +634,9 @@ namespace Thermo.Active.NC
|
||||
/// <summary>
|
||||
/// Try to load live data from json persistence file
|
||||
/// </summary>
|
||||
public static bool ReadLiveData()
|
||||
public static LiveData readLiveData()
|
||||
{
|
||||
bool answ = false;
|
||||
LiveData answ = null;
|
||||
if (File.Exists(LIVE_RECIPE_PATH))
|
||||
{
|
||||
// load all text data
|
||||
@@ -642,11 +644,10 @@ namespace Thermo.Active.NC
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
answ = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
answ = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -655,18 +656,15 @@ namespace Thermo.Active.NC
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
answ = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
// from template --> reset (if present) overview data...
|
||||
foreach (var item in RecipeLiveData.RecipeOverview)
|
||||
{
|
||||
RecipeLiveData.RecipeOverview[item.Key] = RecipeCatStatus.Unchanged;
|
||||
answ.RecipeOverview[item.Key] = RecipeCatStatus.Unchanged;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// salva current
|
||||
SaveRecipeCurrent();
|
||||
answ = true;
|
||||
}
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
@@ -674,9 +672,9 @@ namespace Thermo.Active.NC
|
||||
/// <summary>
|
||||
/// Try to load selected recipe to live data (memory and json persistence file)
|
||||
/// </summary>
|
||||
public static bool LoadRecipe(string filePath)
|
||||
public static LiveData LoadRecipe(string filePath)
|
||||
{
|
||||
bool answ = false;
|
||||
LiveData answ = null;
|
||||
// check file extension: accetta json / rcp / tpl
|
||||
if (!(filePath.EndsWith(".json") || filePath.EndsWith(".rcp") || filePath.EndsWith(".tpl")))
|
||||
{
|
||||
@@ -689,27 +687,29 @@ namespace Thermo.Active.NC
|
||||
if (!Path.IsPathRooted(filePath))
|
||||
{
|
||||
// controllo se ha path della recipe directory
|
||||
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
|
||||
if (!filePath.Contains(NcConfig.SharedPath) && filePath != RECIPE_TEMPLATE_PATH)
|
||||
{
|
||||
// aggiungo base path!
|
||||
filePath = RECIPE_DIRECTORY + filePath;
|
||||
filePath = NcConfig.SharedPath + filePath;
|
||||
}
|
||||
}
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
answ = true;
|
||||
|
||||
// load all text data
|
||||
var rawData = File.ReadAllText(filePath);
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
answ = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
// fix directory se mancasse
|
||||
answ.RecipeDir = $"{Path.GetDirectoryName(filePath)}\\";
|
||||
// fix Modifica dati
|
||||
answ.hasChanged = false;
|
||||
// fix NOME ricetta
|
||||
answ.RecipeName = fileName;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// update current live data!
|
||||
SaveRecipeCurrent();
|
||||
}
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
@@ -731,6 +731,10 @@ namespace Thermo.Active.NC
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
// fix directory default
|
||||
RecipeLiveData.RecipeDir = NcConfig.SharedPath;
|
||||
// fix Modifica dati
|
||||
RecipeLiveData.hasChanged = false;
|
||||
// from template --> reset (if present) overview data...
|
||||
if (RecipeLiveData.RecipeOverview != null)
|
||||
{
|
||||
@@ -758,16 +762,16 @@ namespace Thermo.Active.NC
|
||||
bool answ = false;
|
||||
try
|
||||
{
|
||||
answ = true;
|
||||
// serialize
|
||||
string rawData = JsonConvert.SerializeObject(RecipeLiveData, Newtonsoft.Json.Formatting.Indented);
|
||||
// save live!
|
||||
var dir = Path.GetDirectoryName(LIVE_RECIPE_PATH);
|
||||
var dir = $"{Path.GetDirectoryName(LIVE_RECIPE_PATH)}\\";
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
@@ -786,31 +790,38 @@ namespace Thermo.Active.NC
|
||||
try
|
||||
{
|
||||
// save live!
|
||||
var dir = Path.GetDirectoryName(RECIPE_DIRECTORY);
|
||||
var dir = $"{Path.GetDirectoryName(NcConfig.SharedPath)}\\";
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
|
||||
// se non ho name valido --> FIX come svg...
|
||||
if (!filePath.EndsWith(".svg"))
|
||||
{
|
||||
filePath = RecipeLiveData.RecipeName.Replace(".rcp", ".svg");
|
||||
}
|
||||
// Delete previous image
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
}
|
||||
|
||||
if (!Path.IsPathRooted(filePath))
|
||||
{
|
||||
// aggiungo base path!
|
||||
filePath = RECIPE_DIRECTORY + filePath;
|
||||
// aggiungo base path! se ho path della ricetta corrente uso quella...
|
||||
string currPath = RecipeLiveData.RecipeDir;
|
||||
if (!string.IsNullOrEmpty(currPath))
|
||||
{
|
||||
currPath = NcConfig.SharedPath;
|
||||
}
|
||||
filePath = $"{currPath}{filePath}";
|
||||
}
|
||||
|
||||
// Save NEW image
|
||||
File.WriteAllBytes(filePath, fileData);
|
||||
imageUploaded = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
|
||||
|
||||
return imageUploaded;
|
||||
}
|
||||
/// <summary>
|
||||
@@ -820,12 +831,13 @@ namespace Thermo.Active.NC
|
||||
{
|
||||
// duplicate data...
|
||||
LiveData data2save = RecipeLiveData;
|
||||
data2save.RecipeDir = NcConfig.SharedPath;
|
||||
// template --> reset overview data...
|
||||
data2save.RecipeOverview = new Dictionary<RecipeSection, RecipeCatStatus>();
|
||||
return SaveRecipe(RECIPE_TEMPLATE_PATH, data2save);
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to save live recipe to selected filePath
|
||||
/// Try to save LIVE recipe to selected filePath
|
||||
/// </summary>
|
||||
public static bool SaveRecipe(string filePath, LiveData currRecipe)
|
||||
{
|
||||
@@ -839,24 +851,25 @@ namespace Thermo.Active.NC
|
||||
// default: ricetta!
|
||||
filePath += ".rcp";
|
||||
}
|
||||
string fileName = Path.GetFileName(filePath);
|
||||
|
||||
// fix name!
|
||||
currRecipe.RecipeName = fileName;
|
||||
// serialize
|
||||
string rawData = JsonConvert.SerializeObject(currRecipe, Newtonsoft.Json.Formatting.Indented);
|
||||
// save live!
|
||||
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
|
||||
// verifica path
|
||||
if (!Path.IsPathRooted(filePath))
|
||||
{
|
||||
// controllo se ha path della recipe directory
|
||||
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
|
||||
if (!filePath.Contains(NcConfig.SharedPath) && filePath != RECIPE_TEMPLATE_PATH)
|
||||
{
|
||||
// aggiungo base path!
|
||||
filePath = RECIPE_DIRECTORY + filePath;
|
||||
filePath = NcConfig.SharedPath + filePath;
|
||||
}
|
||||
}
|
||||
|
||||
// fix name, path, modifica!
|
||||
currRecipe.RecipeName = Path.GetFileName(filePath);
|
||||
currRecipe.RecipeDir = $"{Path.GetDirectoryName(filePath)}\\";
|
||||
currRecipe.hasChanged = false;
|
||||
// serialize
|
||||
string rawData = JsonConvert.SerializeObject(currRecipe, Newtonsoft.Json.Formatting.Indented);
|
||||
// save live!
|
||||
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
|
||||
// save!
|
||||
File.WriteAllText(filePath, rawData);
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
|
||||
@@ -30,436 +30,436 @@ namespace Thermo.Active.UI
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
|
||||
this.StepNotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
|
||||
this.NotifyIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.adminMachineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.passwordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.goBackToStandardModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.TXTstatus = new System.Windows.Forms.TextBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.stopServerButton = new System.Windows.Forms.Button();
|
||||
this.openUiButton = new System.Windows.Forms.Button();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.TXTVersion = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.TXTType = new System.Windows.Forms.Label();
|
||||
this.CHNcConnected = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.TXTMachId = new System.Windows.Forms.Label();
|
||||
this.LISTThreadStatus = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.closeCMSServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.serviceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.passwordToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.goBackToStandardModeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.NotifyIconMenu.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// StepNotifyIcon
|
||||
//
|
||||
this.StepNotifyIcon.BalloonTipText = "Active";
|
||||
this.StepNotifyIcon.ContextMenuStrip = this.NotifyIconMenu;
|
||||
this.StepNotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("StepNotifyIcon.Icon")));
|
||||
this.StepNotifyIcon.Text = "Active";
|
||||
this.StepNotifyIcon.Visible = true;
|
||||
this.StepNotifyIcon.DoubleClick += new System.EventHandler(this.NotifyIcon_Click);
|
||||
//
|
||||
// NotifyIconMenu
|
||||
//
|
||||
this.NotifyIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
|
||||
this.StepNotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
|
||||
this.NotifyIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.adminMachineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.passwordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.goBackToStandardModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.TXTstatus = new System.Windows.Forms.TextBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.stopServerButton = new System.Windows.Forms.Button();
|
||||
this.openUiButton = new System.Windows.Forms.Button();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.TXTVersion = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.TXTType = new System.Windows.Forms.Label();
|
||||
this.CHNcConnected = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.TXTMachId = new System.Windows.Forms.Label();
|
||||
this.LISTThreadStatus = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.closeCMSServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.serviceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.passwordToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.goBackToStandardModeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.NotifyIconMenu.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// StepNotifyIcon
|
||||
//
|
||||
this.StepNotifyIcon.BalloonTipText = "Active";
|
||||
this.StepNotifyIcon.ContextMenuStrip = this.NotifyIconMenu;
|
||||
this.StepNotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("StepNotifyIcon.Icon")));
|
||||
this.StepNotifyIcon.Text = "Active";
|
||||
this.StepNotifyIcon.Visible = true;
|
||||
this.StepNotifyIcon.DoubleClick += new System.EventHandler(this.NotifyIcon_Click);
|
||||
//
|
||||
// NotifyIconMenu
|
||||
//
|
||||
this.NotifyIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.adminMachineToolStripMenuItem,
|
||||
this.toolStripSeparator3,
|
||||
this.StopServerItem});
|
||||
this.NotifyIconMenu.Name = "NotifyIconMenu";
|
||||
this.NotifyIconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
|
||||
this.NotifyIconMenu.Size = new System.Drawing.Size(175, 54);
|
||||
//
|
||||
// adminMachineToolStripMenuItem
|
||||
//
|
||||
this.adminMachineToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.NotifyIconMenu.Name = "NotifyIconMenu";
|
||||
this.NotifyIconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
|
||||
this.NotifyIconMenu.Size = new System.Drawing.Size(175, 54);
|
||||
//
|
||||
// adminMachineToolStripMenuItem
|
||||
//
|
||||
this.adminMachineToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.passwordToolStripMenuItem,
|
||||
this.goBackToStandardModeToolStripMenuItem,
|
||||
this.toolStripSeparator,
|
||||
this.resetSpindleHoursToolStripMenuItem,
|
||||
this.resetCountersToolStripMenuItem,
|
||||
this.resetMachineWorkingHoursToolStripMenuItem});
|
||||
this.adminMachineToolStripMenuItem.Name = "adminMachineToolStripMenuItem";
|
||||
this.adminMachineToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.adminMachineToolStripMenuItem.Text = "Service";
|
||||
//
|
||||
// passwordToolStripMenuItem
|
||||
//
|
||||
this.passwordToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
|
||||
this.passwordToolStripMenuItem.Name = "passwordToolStripMenuItem";
|
||||
this.passwordToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.passwordToolStripMenuItem.Text = "Password";
|
||||
this.passwordToolStripMenuItem.Click += new System.EventHandler(this.passwordToolStripMenuItem_Click);
|
||||
//
|
||||
// goBackToStandardModeToolStripMenuItem
|
||||
//
|
||||
this.goBackToStandardModeToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
|
||||
this.goBackToStandardModeToolStripMenuItem.Name = "goBackToStandardModeToolStripMenuItem";
|
||||
this.goBackToStandardModeToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.goBackToStandardModeToolStripMenuItem.Text = "Go back to standard mode";
|
||||
this.goBackToStandardModeToolStripMenuItem.Visible = false;
|
||||
this.goBackToStandardModeToolStripMenuItem.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator
|
||||
//
|
||||
this.toolStripSeparator.Name = "toolStripSeparator";
|
||||
this.toolStripSeparator.Size = new System.Drawing.Size(231, 6);
|
||||
this.toolStripSeparator.Visible = false;
|
||||
//
|
||||
// resetSpindleHoursToolStripMenuItem
|
||||
//
|
||||
this.resetSpindleHoursToolStripMenuItem.Name = "resetSpindleHoursToolStripMenuItem";
|
||||
this.resetSpindleHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetSpindleHoursToolStripMenuItem.Text = "Reset Spindle Active Time";
|
||||
this.resetSpindleHoursToolStripMenuItem.Visible = false;
|
||||
this.resetSpindleHoursToolStripMenuItem.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem_Click);
|
||||
//
|
||||
// resetCountersToolStripMenuItem
|
||||
//
|
||||
this.resetCountersToolStripMenuItem.Name = "resetCountersToolStripMenuItem";
|
||||
this.resetCountersToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetCountersToolStripMenuItem.Text = "Reset CMS-Active Counters";
|
||||
this.resetCountersToolStripMenuItem.Visible = false;
|
||||
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(171, 6);
|
||||
//
|
||||
// StopServerItem
|
||||
//
|
||||
this.StopServerItem.Name = "StopServerItem";
|
||||
this.StopServerItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.StopServerItem.Text = "Close Active Server";
|
||||
this.StopServerItem.Click += new System.EventHandler(this.StopServerItem_Click);
|
||||
//
|
||||
// TXTstatus
|
||||
//
|
||||
this.TXTstatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
this.adminMachineToolStripMenuItem.Name = "adminMachineToolStripMenuItem";
|
||||
this.adminMachineToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.adminMachineToolStripMenuItem.Text = "Service";
|
||||
//
|
||||
// passwordToolStripMenuItem
|
||||
//
|
||||
this.passwordToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
|
||||
this.passwordToolStripMenuItem.Name = "passwordToolStripMenuItem";
|
||||
this.passwordToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.passwordToolStripMenuItem.Text = "Password";
|
||||
this.passwordToolStripMenuItem.Click += new System.EventHandler(this.passwordToolStripMenuItem_Click);
|
||||
//
|
||||
// goBackToStandardModeToolStripMenuItem
|
||||
//
|
||||
this.goBackToStandardModeToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
|
||||
this.goBackToStandardModeToolStripMenuItem.Name = "goBackToStandardModeToolStripMenuItem";
|
||||
this.goBackToStandardModeToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.goBackToStandardModeToolStripMenuItem.Text = "Go back to standard mode";
|
||||
this.goBackToStandardModeToolStripMenuItem.Visible = false;
|
||||
this.goBackToStandardModeToolStripMenuItem.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator
|
||||
//
|
||||
this.toolStripSeparator.Name = "toolStripSeparator";
|
||||
this.toolStripSeparator.Size = new System.Drawing.Size(231, 6);
|
||||
this.toolStripSeparator.Visible = false;
|
||||
//
|
||||
// resetSpindleHoursToolStripMenuItem
|
||||
//
|
||||
this.resetSpindleHoursToolStripMenuItem.Name = "resetSpindleHoursToolStripMenuItem";
|
||||
this.resetSpindleHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetSpindleHoursToolStripMenuItem.Text = "Reset Spindle Active Time";
|
||||
this.resetSpindleHoursToolStripMenuItem.Visible = false;
|
||||
this.resetSpindleHoursToolStripMenuItem.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem_Click);
|
||||
//
|
||||
// resetCountersToolStripMenuItem
|
||||
//
|
||||
this.resetCountersToolStripMenuItem.Name = "resetCountersToolStripMenuItem";
|
||||
this.resetCountersToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetCountersToolStripMenuItem.Text = "Reset CMS-Active Counters";
|
||||
this.resetCountersToolStripMenuItem.Visible = false;
|
||||
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(171, 6);
|
||||
//
|
||||
// StopServerItem
|
||||
//
|
||||
this.StopServerItem.Name = "StopServerItem";
|
||||
this.StopServerItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.StopServerItem.Text = "Close Active Server";
|
||||
this.StopServerItem.Click += new System.EventHandler(this.StopServerItem_Click);
|
||||
//
|
||||
// TXTstatus
|
||||
//
|
||||
this.TXTstatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.TXTstatus, 2);
|
||||
this.TXTstatus.Enabled = false;
|
||||
this.TXTstatus.Location = new System.Drawing.Point(3, 435);
|
||||
this.TXTstatus.Name = "TXTstatus";
|
||||
this.TXTstatus.ReadOnly = true;
|
||||
this.TXTstatus.Size = new System.Drawing.Size(438, 20);
|
||||
this.TXTstatus.TabIndex = 8;
|
||||
this.TXTstatus.Text = "...";
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.TXTstatus, 2);
|
||||
this.TXTstatus.Enabled = false;
|
||||
this.TXTstatus.Location = new System.Drawing.Point(3, 435);
|
||||
this.TXTstatus.Name = "TXTstatus";
|
||||
this.TXTstatus.ReadOnly = true;
|
||||
this.TXTstatus.Size = new System.Drawing.Size(438, 20);
|
||||
this.TXTstatus.TabIndex = 8;
|
||||
this.TXTstatus.Text = "...";
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.ColumnCount = 2;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.stopServerButton, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.openUiButton, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.TXTstatus, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.LISTThreadStatus, 0, 0);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 27);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 3;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 89F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 54F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(444, 457);
|
||||
this.tableLayoutPanel1.TabIndex = 58;
|
||||
//
|
||||
// stopServerButton
|
||||
//
|
||||
this.stopServerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
this.tableLayoutPanel1.ColumnCount = 2;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.stopServerButton, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.openUiButton, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.TXTstatus, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.LISTThreadStatus, 0, 0);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 27);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 3;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 89F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 54F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(444, 457);
|
||||
this.tableLayoutPanel1.TabIndex = 58;
|
||||
//
|
||||
// stopServerButton
|
||||
//
|
||||
this.stopServerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.stopServerButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.stopServerButton.Location = new System.Drawing.Point(225, 381);
|
||||
this.stopServerButton.Name = "stopServerButton";
|
||||
this.stopServerButton.Size = new System.Drawing.Size(216, 48);
|
||||
this.stopServerButton.TabIndex = 3;
|
||||
this.stopServerButton.TabStop = false;
|
||||
this.stopServerButton.Text = "Close Active";
|
||||
this.stopServerButton.Click += new System.EventHandler(this.StopServerButton_Click);
|
||||
//
|
||||
// openUiButton
|
||||
//
|
||||
this.openUiButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
this.stopServerButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.stopServerButton.Location = new System.Drawing.Point(225, 381);
|
||||
this.stopServerButton.Name = "stopServerButton";
|
||||
this.stopServerButton.Size = new System.Drawing.Size(216, 48);
|
||||
this.stopServerButton.TabIndex = 3;
|
||||
this.stopServerButton.TabStop = false;
|
||||
this.stopServerButton.Text = "Close Active";
|
||||
this.stopServerButton.Click += new System.EventHandler(this.StopServerButton_Click);
|
||||
//
|
||||
// openUiButton
|
||||
//
|
||||
this.openUiButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.openUiButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.openUiButton.Location = new System.Drawing.Point(3, 381);
|
||||
this.openUiButton.Name = "openUiButton";
|
||||
this.openUiButton.Size = new System.Drawing.Size(216, 48);
|
||||
this.openUiButton.TabIndex = 58;
|
||||
this.openUiButton.TabStop = false;
|
||||
this.openUiButton.Text = "Open Active Client";
|
||||
this.openUiButton.Click += new System.EventHandler(this.OpenUiButton_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
this.openUiButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.openUiButton.Location = new System.Drawing.Point(3, 381);
|
||||
this.openUiButton.Name = "openUiButton";
|
||||
this.openUiButton.Size = new System.Drawing.Size(216, 48);
|
||||
this.openUiButton.TabIndex = 58;
|
||||
this.openUiButton.TabStop = false;
|
||||
this.openUiButton.Text = "Open Active Client";
|
||||
this.openUiButton.Click += new System.EventHandler(this.OpenUiButton_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Controls.Add(this.TXTVersion);
|
||||
this.panel1.Controls.Add(this.label1);
|
||||
this.panel1.Controls.Add(this.TXTType);
|
||||
this.panel1.Controls.Add(this.CHNcConnected);
|
||||
this.panel1.Controls.Add(this.label2);
|
||||
this.panel1.Controls.Add(this.TXTMachId);
|
||||
this.panel1.Location = new System.Drawing.Point(3, 292);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(438, 83);
|
||||
this.panel1.TabIndex = 9;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(3, 49);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(78, 13);
|
||||
this.label3.TabIndex = 59;
|
||||
this.label3.Text = "Active Version:";
|
||||
//
|
||||
// TXTVersion
|
||||
//
|
||||
this.TXTVersion.AutoSize = true;
|
||||
this.TXTVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TXTVersion.Location = new System.Drawing.Point(87, 49);
|
||||
this.TXTVersion.Name = "TXTVersion";
|
||||
this.TXTVersion.Size = new System.Drawing.Size(19, 13);
|
||||
this.TXTVersion.TabIndex = 58;
|
||||
this.TXTVersion.Text = "---";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(3, 24);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(44, 13);
|
||||
this.label1.TabIndex = 54;
|
||||
this.label1.Text = "Vendor:";
|
||||
//
|
||||
// TXTType
|
||||
//
|
||||
this.TXTType.AutoSize = true;
|
||||
this.TXTType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TXTType.Location = new System.Drawing.Point(48, 24);
|
||||
this.TXTType.Name = "TXTType";
|
||||
this.TXTType.Size = new System.Drawing.Size(19, 13);
|
||||
this.TXTType.TabIndex = 53;
|
||||
this.TXTType.Text = "---";
|
||||
//
|
||||
// CHNcConnected
|
||||
//
|
||||
this.CHNcConnected.AutoCheck = false;
|
||||
this.CHNcConnected.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.CHNcConnected.Location = new System.Drawing.Point(340, 24);
|
||||
this.CHNcConnected.Name = "CHNcConnected";
|
||||
this.CHNcConnected.Size = new System.Drawing.Size(81, 20);
|
||||
this.CHNcConnected.TabIndex = 52;
|
||||
this.CHNcConnected.Text = "Connected";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(142, 24);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(63, 13);
|
||||
this.label2.TabIndex = 57;
|
||||
this.label2.Text = "Machine Id:";
|
||||
//
|
||||
// TXTMachId
|
||||
//
|
||||
this.TXTMachId.AutoSize = true;
|
||||
this.TXTMachId.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TXTMachId.Location = new System.Drawing.Point(240, 24);
|
||||
this.TXTMachId.Name = "TXTMachId";
|
||||
this.TXTMachId.Size = new System.Drawing.Size(19, 13);
|
||||
this.TXTMachId.TabIndex = 56;
|
||||
this.TXTMachId.Text = "---";
|
||||
//
|
||||
// LISTThreadStatus
|
||||
//
|
||||
this.LISTThreadStatus.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Controls.Add(this.TXTVersion);
|
||||
this.panel1.Controls.Add(this.label1);
|
||||
this.panel1.Controls.Add(this.TXTType);
|
||||
this.panel1.Controls.Add(this.CHNcConnected);
|
||||
this.panel1.Controls.Add(this.label2);
|
||||
this.panel1.Controls.Add(this.TXTMachId);
|
||||
this.panel1.Location = new System.Drawing.Point(3, 292);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(438, 83);
|
||||
this.panel1.TabIndex = 9;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(3, 49);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(78, 13);
|
||||
this.label3.TabIndex = 59;
|
||||
this.label3.Text = "Active Version:";
|
||||
//
|
||||
// TXTVersion
|
||||
//
|
||||
this.TXTVersion.AutoSize = true;
|
||||
this.TXTVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TXTVersion.Location = new System.Drawing.Point(87, 49);
|
||||
this.TXTVersion.Name = "TXTVersion";
|
||||
this.TXTVersion.Size = new System.Drawing.Size(19, 13);
|
||||
this.TXTVersion.TabIndex = 58;
|
||||
this.TXTVersion.Text = "---";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(3, 24);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(44, 13);
|
||||
this.label1.TabIndex = 54;
|
||||
this.label1.Text = "Vendor:";
|
||||
//
|
||||
// TXTType
|
||||
//
|
||||
this.TXTType.AutoSize = true;
|
||||
this.TXTType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TXTType.Location = new System.Drawing.Point(48, 24);
|
||||
this.TXTType.Name = "TXTType";
|
||||
this.TXTType.Size = new System.Drawing.Size(19, 13);
|
||||
this.TXTType.TabIndex = 53;
|
||||
this.TXTType.Text = "---";
|
||||
//
|
||||
// CHNcConnected
|
||||
//
|
||||
this.CHNcConnected.AutoCheck = false;
|
||||
this.CHNcConnected.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.CHNcConnected.Location = new System.Drawing.Point(340, 24);
|
||||
this.CHNcConnected.Name = "CHNcConnected";
|
||||
this.CHNcConnected.Size = new System.Drawing.Size(81, 20);
|
||||
this.CHNcConnected.TabIndex = 52;
|
||||
this.CHNcConnected.Text = "Connected";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(142, 24);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(63, 13);
|
||||
this.label2.TabIndex = 57;
|
||||
this.label2.Text = "Machine Id:";
|
||||
//
|
||||
// TXTMachId
|
||||
//
|
||||
this.TXTMachId.AutoSize = true;
|
||||
this.TXTMachId.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TXTMachId.Location = new System.Drawing.Point(240, 24);
|
||||
this.TXTMachId.Name = "TXTMachId";
|
||||
this.TXTMachId.Size = new System.Drawing.Size(19, 13);
|
||||
this.TXTMachId.TabIndex = 56;
|
||||
this.TXTMachId.Text = "---";
|
||||
//
|
||||
// LISTThreadStatus
|
||||
//
|
||||
this.LISTThreadStatus.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2});
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
|
||||
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.LISTThreadStatus.HideSelection = false;
|
||||
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
|
||||
this.LISTThreadStatus.Name = "LISTThreadStatus";
|
||||
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 283);
|
||||
this.LISTThreadStatus.TabIndex = 59;
|
||||
this.LISTThreadStatus.UseCompatibleStateImageBehavior = false;
|
||||
this.LISTThreadStatus.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
this.columnHeader1.Text = "Thread Name";
|
||||
this.columnHeader1.Width = 328;
|
||||
//
|
||||
// columnHeader2
|
||||
//
|
||||
this.columnHeader2.Text = "Time";
|
||||
this.columnHeader2.Width = 78;
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
|
||||
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.LISTThreadStatus.HideSelection = false;
|
||||
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
|
||||
this.LISTThreadStatus.Name = "LISTThreadStatus";
|
||||
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 283);
|
||||
this.LISTThreadStatus.TabIndex = 59;
|
||||
this.LISTThreadStatus.UseCompatibleStateImageBehavior = false;
|
||||
this.LISTThreadStatus.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
this.columnHeader1.Text = "Thread Name";
|
||||
this.columnHeader1.Width = 328;
|
||||
//
|
||||
// columnHeader2
|
||||
//
|
||||
this.columnHeader2.Text = "Time";
|
||||
this.columnHeader2.Width = 78;
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.menuToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(468, 24);
|
||||
this.menuStrip1.TabIndex = 59;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// menuToolStripMenuItem
|
||||
//
|
||||
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(468, 24);
|
||||
this.menuStrip1.TabIndex = 59;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// menuToolStripMenuItem
|
||||
//
|
||||
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.closeCMSServerToolStripMenuItem,
|
||||
this.toolStripSeparator2,
|
||||
this.serviceToolStripMenuItem});
|
||||
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
|
||||
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
|
||||
this.menuToolStripMenuItem.Text = "Menu";
|
||||
//
|
||||
// closeCMSServerToolStripMenuItem
|
||||
//
|
||||
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
|
||||
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
|
||||
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
|
||||
//
|
||||
// serviceToolStripMenuItem
|
||||
//
|
||||
this.serviceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
|
||||
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
|
||||
this.menuToolStripMenuItem.Text = "Menu";
|
||||
//
|
||||
// closeCMSServerToolStripMenuItem
|
||||
//
|
||||
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
|
||||
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
|
||||
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
|
||||
//
|
||||
// serviceToolStripMenuItem
|
||||
//
|
||||
this.serviceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.passwordToolStripMenuItem1,
|
||||
this.goBackToStandardModeToolStripMenuItem1,
|
||||
this.toolStripSeparator1,
|
||||
this.resetSpindleHoursToolStripMenuItem1,
|
||||
this.resetCountersToolStripMenuItem1,
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1});
|
||||
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
|
||||
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.serviceToolStripMenuItem.Text = "Service";
|
||||
//
|
||||
// passwordToolStripMenuItem1
|
||||
//
|
||||
this.passwordToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
|
||||
this.passwordToolStripMenuItem1.Name = "passwordToolStripMenuItem1";
|
||||
this.passwordToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.passwordToolStripMenuItem1.Text = "Password";
|
||||
this.passwordToolStripMenuItem1.Click += new System.EventHandler(this.passwordToolStripMenuItem1_Click);
|
||||
//
|
||||
// goBackToStandardModeToolStripMenuItem1
|
||||
//
|
||||
this.goBackToStandardModeToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
|
||||
this.goBackToStandardModeToolStripMenuItem1.Name = "goBackToStandardModeToolStripMenuItem1";
|
||||
this.goBackToStandardModeToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.goBackToStandardModeToolStripMenuItem1.Text = "Go back to standard mode";
|
||||
this.goBackToStandardModeToolStripMenuItem1.Visible = false;
|
||||
this.goBackToStandardModeToolStripMenuItem1.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem1_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(231, 6);
|
||||
this.toolStripSeparator1.Visible = false;
|
||||
//
|
||||
// resetSpindleHoursToolStripMenuItem1
|
||||
//
|
||||
this.resetSpindleHoursToolStripMenuItem1.Name = "resetSpindleHoursToolStripMenuItem1";
|
||||
this.resetSpindleHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetSpindleHoursToolStripMenuItem1.Text = "Reset Spindle Active Time";
|
||||
this.resetSpindleHoursToolStripMenuItem1.Visible = false;
|
||||
this.resetSpindleHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem1_Click);
|
||||
//
|
||||
// resetCountersToolStripMenuItem1
|
||||
//
|
||||
this.resetCountersToolStripMenuItem1.Name = "resetCountersToolStripMenuItem1";
|
||||
this.resetCountersToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetCountersToolStripMenuItem1.Text = "Reset CMS-Active Counters";
|
||||
this.resetCountersToolStripMenuItem1.Visible = false;
|
||||
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem1
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Text = "Reset Machine Working Hours";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Visible = false;
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem1_Click);
|
||||
//
|
||||
// ServerControlWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(468, 496);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ServerControlWindow";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServerControlWindow_FormClosing);
|
||||
this.Load += new System.EventHandler(this.ServerControlWindow_Load);
|
||||
this.NotifyIconMenu.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
|
||||
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.serviceToolStripMenuItem.Text = "Service";
|
||||
//
|
||||
// passwordToolStripMenuItem1
|
||||
//
|
||||
this.passwordToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
|
||||
this.passwordToolStripMenuItem1.Name = "passwordToolStripMenuItem1";
|
||||
this.passwordToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.passwordToolStripMenuItem1.Text = "Password";
|
||||
this.passwordToolStripMenuItem1.Click += new System.EventHandler(this.passwordToolStripMenuItem1_Click);
|
||||
//
|
||||
// goBackToStandardModeToolStripMenuItem1
|
||||
//
|
||||
this.goBackToStandardModeToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
|
||||
this.goBackToStandardModeToolStripMenuItem1.Name = "goBackToStandardModeToolStripMenuItem1";
|
||||
this.goBackToStandardModeToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.goBackToStandardModeToolStripMenuItem1.Text = "Go back to standard mode";
|
||||
this.goBackToStandardModeToolStripMenuItem1.Visible = false;
|
||||
this.goBackToStandardModeToolStripMenuItem1.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem1_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(231, 6);
|
||||
this.toolStripSeparator1.Visible = false;
|
||||
//
|
||||
// resetSpindleHoursToolStripMenuItem1
|
||||
//
|
||||
this.resetSpindleHoursToolStripMenuItem1.Name = "resetSpindleHoursToolStripMenuItem1";
|
||||
this.resetSpindleHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetSpindleHoursToolStripMenuItem1.Text = "Reset Spindle Active Time";
|
||||
this.resetSpindleHoursToolStripMenuItem1.Visible = false;
|
||||
this.resetSpindleHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem1_Click);
|
||||
//
|
||||
// resetCountersToolStripMenuItem1
|
||||
//
|
||||
this.resetCountersToolStripMenuItem1.Name = "resetCountersToolStripMenuItem1";
|
||||
this.resetCountersToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetCountersToolStripMenuItem1.Text = "Reset CMS-Active Counters";
|
||||
this.resetCountersToolStripMenuItem1.Visible = false;
|
||||
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem1
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Text = "Reset Machine Working Hours";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Visible = false;
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem1_Click);
|
||||
//
|
||||
// ServerControlWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(468, 496);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ServerControlWindow";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServerControlWindow_FormClosing);
|
||||
this.Load += new System.EventHandler(this.ServerControlWindow_Load);
|
||||
this.NotifyIconMenu.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,21 @@ namespace Thermo.Active.Utils
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Conversion string --> TACT_AXIS_TYPE
|
||||
/// </summary>
|
||||
/// <param name="strValue"></param>
|
||||
/// <returns></returns>
|
||||
public static TACT_AXES_TYPE GetTActAxes_Type(string strValue)
|
||||
{
|
||||
TACT_AXES_TYPE answ = TACT_AXES_TYPE.NA;
|
||||
try
|
||||
{
|
||||
answ = (TACT_AXES_TYPE)Enum.Parse(typeof(TACT_AXES_TYPE), strValue);
|
||||
}
|
||||
catch { }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Conversion string --> TACT_MBLOCK_TYPE
|
||||
/// </summary>
|
||||
/// <param name="strValue"></param>
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<add key="enableDirectoryBrowsing" value="true" />
|
||||
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||
<add key="ServerServiceName" value="MariaDB" />
|
||||
<add key="nMaxParamWrite" value="5" />
|
||||
<add key="delayParamWrite" value="5" />
|
||||
<add key="ewmaPar100" value="40" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<compilation debug="true" targetFramework="4.6.2" />
|
||||
@@ -108,7 +111,7 @@
|
||||
<add name="SignalR-Bus" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.Transports.WebSocketTransport">
|
||||
<!-- <source name="SignalR.Transports.WebSocketTransport">
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
@@ -132,7 +135,7 @@
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
</source>
|
||||
</source> -->
|
||||
<source name="SignalR.ReflectedHubDescriptorProvider">
|
||||
<listeners>
|
||||
<add name="SignalR-Init" />
|
||||
@@ -146,7 +149,6 @@
|
||||
<!-- Specifies the trace writer for output -->
|
||||
<sharedListeners>
|
||||
<!-- Listener for transport events -->
|
||||
<add name="SignalR-Transports" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/transports.log" traceOutputOptions="None"/>
|
||||
<!--<add name="SignalR-Transports" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/transports.log" />-->
|
||||
<!-- Listener for scaleout provider events -->
|
||||
<add name="SignalR-Bus" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/bus.log" />
|
||||
|
||||
@@ -183,6 +183,19 @@ namespace Thermo.Active.Controllers.SignalR
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
[SignalRAuthorize(FunctionAccess = GENERAL, Action = ACTIONS.WRITE)]
|
||||
public void WriteM156Response(int process, double responseVal)
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.WriteM156Data(process, responseVal);
|
||||
if (cmsError.IsError())
|
||||
throw new HubException(cmsError.localizationKey);
|
||||
}
|
||||
}
|
||||
|
||||
[SignalRAuthorize(FunctionAccess = GENERAL, Action = ACTIONS.WRITE)]
|
||||
public void WriteScadaValue(string memIndex, SCADA_MEM_TYPE memType, object value)
|
||||
{
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
ProdEnabled = SoftwareProdConfig.Enabled,
|
||||
ProdPath = SoftwareProdConfig.Path,
|
||||
ExtSoftwares = ExtSoftwaresConfig,
|
||||
AdditionalParameters = AdditionalParametersConfig,
|
||||
Autorun = ServerStartupConfig.AutoOpenCmsClient,
|
||||
EditorPath = ServerStartupConfig.TextEditorPath,
|
||||
MgiOption = NcConfig.MgiOption,
|
||||
|
||||
@@ -55,10 +55,10 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
Dictionary<string, string> alarmsNames = GetPlcAlarmsTranslations(language);
|
||||
Dictionary<string, string> headsNames = GetLocalizedHeadsNames(language);
|
||||
|
||||
// scada
|
||||
Dictionary<string, string> scadaTranslations = GetScadaTranslations(language);
|
||||
Dictionary<string, string> m156Translations = GetM156Translations(language);
|
||||
|
||||
// THermo (modules and recipe enums) translations
|
||||
// Thermo (modules and recipe enums) translations
|
||||
Dictionary<string, string> thermoTranslations = GetThermoTranslations(language);
|
||||
|
||||
|
||||
@@ -72,7 +72,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
translations = translations.Concat(headsNames).ToDictionary(x => x.Key, x => x.Value);
|
||||
// Scada
|
||||
translations = translations.Concat(scadaTranslations).ToDictionary(x => x.Key, x => x.Value);
|
||||
// Scada
|
||||
// M156
|
||||
translations = translations.Concat(m156Translations).ToDictionary(x => x.Key, x => x.Value);
|
||||
// Thermo
|
||||
translations = translations.Concat(thermoTranslations).ToDictionary(x => x.Key, x => x.Value);
|
||||
|
||||
if (translations == null)
|
||||
@@ -210,5 +212,31 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
|
||||
return translatedNames;
|
||||
}
|
||||
|
||||
public static Dictionary<string, string> GetM156Translations(string language)
|
||||
{
|
||||
Dictionary<string, string> translatedNames = new Dictionary<string, string>();
|
||||
|
||||
foreach (var input in InputsOperatorConfig)
|
||||
{
|
||||
translatedNames.Add(
|
||||
"m156_title_" + input.Id,
|
||||
GetValueFromLocalizationList(input.Messages, language, "Title_" + input.Id)
|
||||
);
|
||||
|
||||
if (input.Buttons != null && input.Buttons.Count() > 0)
|
||||
foreach (var button in input.Buttons)
|
||||
{
|
||||
// Add translated button text to the list
|
||||
// Buttons have a Dictionary<string, string> with the translations
|
||||
translatedNames.Add(
|
||||
"m156_" + input.Id + "_button_" + button.Key,
|
||||
GetValueFromLocalizationList(button.Value, language, "Button_" + button.Key)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return translatedNames;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,7 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
#if true
|
||||
/// <summary>
|
||||
/// Request mode AUTO
|
||||
/// </summary>
|
||||
@@ -71,7 +72,8 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/// <summary>
|
||||
/// Request mode SETUP
|
||||
/// </summary>
|
||||
@@ -100,9 +102,42 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Set item as scrap
|
||||
/// </summary>
|
||||
/// <param name="num">item NUM</param>
|
||||
/// <param name="isScrap">scrap flag (true/false)</param>
|
||||
/// <returns></returns>
|
||||
[Route("setScrap"), HttpPut]
|
||||
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
|
||||
public IHttpActionResult SetScrap(int num, bool isScrap)
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | SetScrap | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// scrivo sul DB che il pezzo è SCRAPPED
|
||||
libraryError = ncAdapter.SetScrap(num, isScrap);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"SetScrap error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Request start production
|
||||
/// </summary>
|
||||
/// <param name="requestQty">item NUM</param>
|
||||
/// <param name="newWorkOrder">scrap flag (true/false)</param>
|
||||
/// <returns></returns>
|
||||
[Route("start"), HttpPut]
|
||||
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
|
||||
@@ -116,19 +151,73 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder);
|
||||
// legacy method
|
||||
short numCicliRisc = 0;
|
||||
|
||||
// scrivo sul PLC pezzi richiesti, cicli riscaldo + comando strobe reset se encessario!
|
||||
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder, numCicliRisc);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"StartProd error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
// se new workorder --> registro nuova data lorro!
|
||||
// se new workorder --> registro nuova data x start lotto!
|
||||
if (newWorkOrder)
|
||||
{
|
||||
ncAdapter.lottoStart = DateTime.Now;
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.StrobeMode(Mode.AUTO);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"RequestAuto error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
/// <summary>
|
||||
/// Request start production
|
||||
/// </summary>
|
||||
/// <param name="requestQty">item NUM</param>
|
||||
/// <param name="newWorkOrder">scrap flag (true/false)</param>
|
||||
/// <param name="numCicliRisc">warmup cycle requested (0=none)</param>
|
||||
/// <returns></returns>
|
||||
[Route("startFull"), HttpPut]
|
||||
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
|
||||
public IHttpActionResult StartProdFull(int requestQty, bool newWorkOrder, int numCicliRisc)
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | StartProd | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// scrivo sul PLC pezzi richiesti, cicli riscaldo + comando strobe reset se encessario!
|
||||
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder, (short)numCicliRisc);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"StartProd error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
// se new workorder --> registro nuova data x start lotto!
|
||||
if (newWorkOrder)
|
||||
{
|
||||
ncAdapter.lottoStart = DateTime.Now;
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.StrobeMode(Mode.AUTO);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"RequestAuto error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
try
|
||||
{
|
||||
// ora salvo ANCHE i dati live...
|
||||
NcFileAdapter.RecipeLiveData.ChannelSetpoints = chSetpoints;
|
||||
NcAdapter.RecipeLiveData.ChannelSetpoints = chSetpoints;
|
||||
// e salvo su disco
|
||||
NcFileAdapter.SaveRecipeCurrent();
|
||||
}
|
||||
|
||||
@@ -60,13 +60,9 @@ namespace Thermo.Active.Listeners
|
||||
{
|
||||
SignalRListener.SendHeadsData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_AXIS_NAMES_DATA, (a, b) =>
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_AXIS_INFO, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendAxesNamesData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_AXES, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendAxesToClient(a);
|
||||
SignalRListener.SendThermoAxisInfoData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_ACTIVE_PROGRAM_DATA, (a, b) =>
|
||||
{
|
||||
@@ -78,12 +74,6 @@ namespace Thermo.Active.Listeners
|
||||
SignalRListener.SendPartProgramQueue(a);
|
||||
SignalRDatabaseHandler.UpdateQueue(a);
|
||||
}));
|
||||
#if false
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_M155_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendM155Data(a);
|
||||
}));
|
||||
#endif
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_SCADA_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendScadaData(a);
|
||||
@@ -92,6 +82,10 @@ namespace Thermo.Active.Listeners
|
||||
{
|
||||
SignalRListener.SetGatewayRebootStatus(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_M156_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendM156Data(a);
|
||||
}));
|
||||
|
||||
// add specific modules for THERMO
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_RECIPE_FULL, (a, b) =>
|
||||
@@ -102,6 +96,10 @@ namespace Thermo.Active.Listeners
|
||||
{
|
||||
SignalRListener.SendThermoRecipeOverviewData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_RECIPE_CHANGED, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoRecipeChangedData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_MODULE_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoModulesData(a);
|
||||
|
||||
@@ -4,11 +4,13 @@ using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using TeamDev.SDK.FluentProgramming;
|
||||
using Thermo.Active.Config;
|
||||
using Thermo.Active.Controllers.SignalR;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.Model.DTOModels.AlarmModels;
|
||||
using Thermo.Active.Model.DTOModels.Scada;
|
||||
using Thermo.Active.Model.DTOModels.ThAxes;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Model.DTOModels.ThProd;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
@@ -34,17 +36,6 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendAxesToClient(object newAxesData)
|
||||
{
|
||||
if (!LastAxesPositions.Equals(newAxesData))
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
LastAxesPositions = newAxesData as DTOAxesModel;
|
||||
|
||||
context.Clients.Group("ncData").axesPositions(newAxesData);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendPowerOnDataToClient(object powerOnData)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
@@ -170,20 +161,6 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendAxesNamesData(object axesNames)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
List<DTOAxisNameModel> newData = axesNames as List<DTOAxisNameModel>;
|
||||
|
||||
// Check if collections are equals
|
||||
if (newData.Count != LastAxesNamesData.Count || !LastAxesNamesData.All(newData.Contains))
|
||||
{
|
||||
LastAxesNamesData = newData;
|
||||
// Send data to clients
|
||||
context.Clients.Group("ncData").axesNames(axesNames);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendActiveProgramData(object programData)
|
||||
{
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
@@ -226,20 +203,17 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
}
|
||||
}
|
||||
|
||||
#if false
|
||||
public static void SendM155Data(object data)
|
||||
public static void SendM156Data(object data)
|
||||
{
|
||||
List<DTOM155InputModel> dtoM155Data = data as List<DTOM155InputModel>;
|
||||
List<DTOM156InputModel> dtoM156Data = data as List<DTOM156InputModel>;
|
||||
|
||||
if (!LastM155Data.SequenceEqual(dtoM155Data))
|
||||
if (!LastM156Data.SequenceEqual(dtoM156Data))
|
||||
{
|
||||
LastM155Data = dtoM155Data;
|
||||
LastM156Data = dtoM156Data;
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").m155Data(dtoM155Data);
|
||||
context.Clients.Group("ncData").m156Data(dtoM156Data);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
public static void SendScadaData(object scada)
|
||||
{
|
||||
List<DTOScadaModel> scadaVal = scada as List<DTOScadaModel>;
|
||||
@@ -276,8 +250,9 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
|
||||
if (diffData.Count > 0)
|
||||
{
|
||||
// salvo update
|
||||
LastRecipeFullData = currRecipeFull;
|
||||
// salvo update CLONANDO
|
||||
//LastRecipeFullData = currRecipeFull;
|
||||
LastRecipeFullData = currRecipeFull.Keys.ToDictionary(_ => _, _ => currRecipeFull[_].Clone());
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").recipeFullData(diffData);
|
||||
@@ -314,7 +289,17 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
context.Clients.Group("ncData").recipeOverData(currRecipeOver);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoRecipeChangedData(object message)
|
||||
{
|
||||
DTORecipeStatus currMessage = message as DTORecipeStatus;
|
||||
if (currMessage.hasChanged != recipeHasChanged || currMessage.forceSend)
|
||||
{
|
||||
// salvo update
|
||||
recipeHasChanged = currMessage.hasChanged;
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").recipeChangedData(currMessage);
|
||||
}
|
||||
}
|
||||
public static void SendThermoModulesData(object modules)
|
||||
{
|
||||
Dictionary<int, DTOModulesBlock> currModules = modules as Dictionary<int, DTOModulesBlock>;
|
||||
@@ -344,7 +329,6 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
context.Clients.Group("ncData").modulesData(currModules);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoWarmersData(object warmers)
|
||||
{
|
||||
Dictionary<int, DTOWarmers> currWarmers = warmers as Dictionary<int, DTOWarmers>;
|
||||
@@ -374,8 +358,6 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
context.Clients.Group("ncData").warmersData(currWarmers);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void SendThermoAreaData(object area)
|
||||
{
|
||||
Dictionary<string, double> currArea = area as Dictionary<string, double>;
|
||||
@@ -405,17 +387,34 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
context.Clients.Group("ncData").areaData(currArea);
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendThermoGaugeData(object currentLiveProd)
|
||||
{
|
||||
Dictionary<string, DTOThermoProd> currLiveProd = currentLiveProd as Dictionary<string, DTOThermoProd>;
|
||||
Dictionary<string, DTOThermoProd> diffGaugeData = new Dictionary<string, DTOThermoProd>();
|
||||
|
||||
if (!LastLiveProdData.Equals(currLiveProd))
|
||||
foreach (var item in currLiveProd)
|
||||
{
|
||||
LastLiveProdData = currLiveProd;
|
||||
if (!LastLiveProdData.ContainsKey(item.Key))
|
||||
{
|
||||
diffGaugeData.Add(item.Key, item.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// comparazione
|
||||
if (!item.Value.Equals(LastLiveProdData[item.Key]))
|
||||
{
|
||||
diffGaugeData.Add(item.Key, item.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (diffGaugeData.Count > 0)
|
||||
{
|
||||
// salvo update CLONANDO
|
||||
LastLiveProdData = currLiveProd.Keys.ToDictionary(_ => _, _ => currLiveProd[_].Clone());
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").gaugeData(currLiveProd);
|
||||
context.Clients.Group("ncData").gaugeData(diffGaugeData);
|
||||
}
|
||||
}
|
||||
public static void SendThermoProdPanelData(object prodPanelData)
|
||||
@@ -455,6 +454,36 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoAxisInfoData(object axisInfoData)
|
||||
{
|
||||
Dictionary<int, DTOAxisInfoModel> currInfoAxes = axisInfoData as Dictionary<int, DTOAxisInfoModel>;
|
||||
Dictionary<int, DTOAxisInfoModel> diffAxisData = new Dictionary<int, DTOAxisInfoModel>();
|
||||
|
||||
foreach (var item in currInfoAxes)
|
||||
{
|
||||
if (!LastAxisInfoData.ContainsKey(item.Key))
|
||||
{
|
||||
diffAxisData.Add(item.Key, item.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// comparazione
|
||||
if (!item.Value.Equals(LastAxisInfoData[item.Key]))
|
||||
{
|
||||
diffAxisData.Add(item.Key, item.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
// se ho differenze invio!
|
||||
if (diffAxisData.Count > 0)
|
||||
{
|
||||
// salvo update CLONANDO
|
||||
LastAxisInfoData= currInfoAxes.Keys.ToDictionary(_ => _, _ => currInfoAxes[_].Clone());
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").axisInfo(diffAxisData);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetGatewayRebootStatus(object status)
|
||||
{
|
||||
string msg = status.ToString();
|
||||
@@ -504,20 +533,17 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
group.userSoftKeys(LastUserSoftKeysData);
|
||||
// Send heads data
|
||||
group.headsData(LastHeadsData);
|
||||
// Send axesNames data
|
||||
group.axesNames(LastAxesNamesData);
|
||||
// Send positions
|
||||
group.axesPositions(LastAxesPositions);
|
||||
// Send Axis Info data
|
||||
group.axisInfo(LastAxisInfoData);
|
||||
// Send active program data
|
||||
group.activeProgramData(LastProgramData);
|
||||
// Send magazine is active data
|
||||
group.magazineIsActive(LastNcMagazineIsActive);
|
||||
// Send PP Queue
|
||||
group.partProgramQueue(LastPartProgramQueue);
|
||||
#if false
|
||||
// Send m155 data
|
||||
group.m155Data(LastM155Data);
|
||||
#endif
|
||||
// Send m156
|
||||
group.m156Data(LastM156Data);
|
||||
|
||||
// Send Scada
|
||||
group.scadaData(LastScadaData);
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.Model.DTOModels.AlarmModels;
|
||||
using Thermo.Active.Model.DTOModels.Scada;
|
||||
using Thermo.Active.Model.DTOModels.ThAxes;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Model.DTOModels.ThProd;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
@@ -22,19 +23,19 @@ namespace Thermo.Active.Listeners
|
||||
public static List<DTOUserSoftKeyModel> LastUserSoftKeysData = new List<DTOUserSoftKeyModel>();
|
||||
public static List<DTONcSoftKeyModel> LastNcSoftKeysData = new List<DTONcSoftKeyModel>();
|
||||
public static List<DTOHeadModel> LastHeadsData = new List<DTOHeadModel>();
|
||||
public static DTOAxesModel LastAxesPositions = new DTOAxesModel();
|
||||
public static List<DTOAxisNameModel> LastAxesNamesData = new List<DTOAxisNameModel>();
|
||||
public static DTOActiveProgramDataModel LastProgramData = new DTOActiveProgramDataModel();
|
||||
public static Dictionary<int, bool> LastNcMagazineIsActive = new Dictionary<int, bool>();
|
||||
public static List<DTOQueueModel> LastPartProgramQueue = new List<DTOQueueModel>();
|
||||
#if false
|
||||
public static List<DTOM155InputModel> LastM155Data = new List<DTOM155InputModel>();
|
||||
#endif
|
||||
public static List<DTOM156InputModel> LastM156Data = new List<DTOM156InputModel>();
|
||||
public static List<DTOScadaModel> LastScadaData = new List<DTOScadaModel>();
|
||||
|
||||
// FIXME TODO inserire oggetti corretti per THERMO
|
||||
// Oggetti specifici per THERMO (1° definizione)
|
||||
public static Dictionary<string, DTORecipeParam> LastRecipeFullData = new Dictionary<string, DTORecipeParam>();
|
||||
public static Dictionary<RecipeSection, RecipeCatStatus> LastRecipeOverData = new Dictionary<RecipeSection, RecipeCatStatus>();
|
||||
public static bool? recipeHasChanged = null;
|
||||
public static Dictionary<int, DTOModulesBlock> LastModulesData = new Dictionary<int, DTOModulesBlock>();
|
||||
public static Dictionary<int, DTOWarmers> LastWarmersData = new Dictionary<int, DTOWarmers>();
|
||||
public static Dictionary<string, double> LastAreaData = new Dictionary<string, double>();
|
||||
@@ -42,6 +43,8 @@ namespace Thermo.Active.Listeners
|
||||
public static ThermoModels.ProdCycleModel LastProdCycleData = new ThermoModels.ProdCycleModel();
|
||||
public static DTOProdInfo LastProdInfoData = new DTOProdInfo();
|
||||
public static DTOThermoPanelProd LastProdPanelData = new DTOThermoPanelProd();
|
||||
// Oggetti per assi THERMO
|
||||
public static Dictionary<int, DTOAxisInfoModel> LastAxisInfoData = new Dictionary<int, DTOAxisInfoModel>();
|
||||
|
||||
public static bool LastIsNcConnected = false;
|
||||
}
|
||||
|
||||
@@ -30,4 +30,4 @@ using System.Runtime.InteropServices;
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("0.12.64")]
|
||||
[assembly: AssemblyVersion("0.20.100")]
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
@@ -378,8 +378,9 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
|
||||
margin-left: 5px;
|
||||
|
||||
&.error {
|
||||
background-color: rgba(255, 0, 0, .7);
|
||||
background-color: rgba(255, 0, 0, .7) !important;
|
||||
color: #222;
|
||||
background-image: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
margin-right: 20px;
|
||||
|
||||
.fa-arrow-up,
|
||||
.fa-arrow-down {
|
||||
.fa-arrow-down {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
@@ -890,7 +890,7 @@
|
||||
.axes:last-child {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
|
||||
.tabs {
|
||||
min-height: 30px;
|
||||
width: 100%;
|
||||
@@ -937,7 +937,7 @@
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
||||
|
||||
.label-container{
|
||||
.label-container {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
font-weight: 600;
|
||||
@@ -962,6 +962,63 @@
|
||||
}
|
||||
|
||||
.card-folder-path {
|
||||
|
||||
.context-menu {
|
||||
position: relative;
|
||||
width: 40px;
|
||||
|
||||
.context-area {
|
||||
top: 50px;
|
||||
display: none;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
||||
position: absolute;
|
||||
width: 300px;
|
||||
left: -150px + 24px;
|
||||
padding-inline-start: 0;
|
||||
padding-inline-end: 0;
|
||||
|
||||
|
||||
&.show {
|
||||
display: block !important;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
height: 62px;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
|
||||
color: #545454;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 0 28px;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
&:last-of-type {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -15px;
|
||||
left: calc(~'50% - 8px');
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 15px solid transparent;
|
||||
border-right: 15px solid transparent;
|
||||
border-bottom: 15px solid #fff;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
width: auto;
|
||||
height: 64px;
|
||||
display: flex;
|
||||
@@ -1555,7 +1612,7 @@
|
||||
padding-right: 8px;
|
||||
font-size: 20px;
|
||||
text-align: left;
|
||||
padding-left: 8px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1930,7 +1987,7 @@
|
||||
background-color: @color-clear-blue-30;
|
||||
color: #002680;
|
||||
|
||||
.not-exist{
|
||||
.not-exist {
|
||||
color: #d0021b !important;
|
||||
}
|
||||
|
||||
@@ -6104,4 +6161,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
} */
|
||||
@@ -173,9 +173,10 @@
|
||||
}
|
||||
|
||||
time {
|
||||
font-size: 120px;
|
||||
font-size: 100px;
|
||||
font-weight: 300;
|
||||
z-index: 1;
|
||||
max-height: 140px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,9 @@ footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
img {
|
||||
margin: 0px 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
|
||||
@@ -139,6 +139,25 @@ select:focus {
|
||||
|
||||
}
|
||||
|
||||
.input-select{
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #6d6d6d;
|
||||
min-width: 200px;
|
||||
width: fit-content;
|
||||
height: 48px;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: none;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
padding: 0 10px;
|
||||
align-items: center;
|
||||
justify-content: stretch;
|
||||
padding-right: 25px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.input-area {
|
||||
width: 100%;
|
||||
|
||||
@@ -216,6 +216,17 @@
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
.content-modal-showval {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
span {
|
||||
word-wrap: break-word;
|
||||
max-width: 700px;
|
||||
font-size: 30px
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.content-btn {
|
||||
width: 592px;
|
||||
@@ -1159,7 +1170,7 @@
|
||||
justify-content: center;
|
||||
|
||||
&.nc {
|
||||
z-index: 700;
|
||||
z-index: 1002;
|
||||
}
|
||||
|
||||
&.internal {
|
||||
@@ -1493,7 +1504,6 @@
|
||||
.title_lbl,
|
||||
.description_lbl {
|
||||
margin-top: 22px;
|
||||
margin-left: 24px;
|
||||
font-size: 14px;
|
||||
color: @color-warm-grey;
|
||||
margin-bottom: 4px;
|
||||
@@ -2378,7 +2388,7 @@
|
||||
line-height: 4px;
|
||||
|
||||
.title {
|
||||
width: 110px;
|
||||
min-width: 130px;
|
||||
text-align: right;
|
||||
color: @color-darkish-blue;
|
||||
}
|
||||
@@ -2436,6 +2446,9 @@
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
img {
|
||||
display: block;
|
||||
@@ -2475,6 +2488,11 @@
|
||||
overflow-x: hidden;
|
||||
height: calc(~"100% - 360px");
|
||||
flex-flow: column;
|
||||
|
||||
.key {
|
||||
width: 200px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.row {
|
||||
width: 99%;
|
||||
@@ -3427,7 +3445,7 @@
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #cccccc;
|
||||
background: #ffffff;
|
||||
top: 0;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
@@ -4118,8 +4136,7 @@
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
|
||||
.title_lbl,
|
||||
.description_lbl {
|
||||
.title_lbl {
|
||||
margin-top: 22px;
|
||||
margin-left: 24px;
|
||||
font-size: 14px;
|
||||
|
||||
@@ -31,10 +31,8 @@
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
|
||||
display: grid;
|
||||
grid-template-columns: 48px 101px;
|
||||
grid-template-rows: 48px;
|
||||
|
||||
height: 48px;
|
||||
|
||||
span {
|
||||
margin: auto;
|
||||
font-size: 13px;
|
||||
|
||||
@@ -33,4 +33,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
.icon{
|
||||
font-size: 30px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,32 +1,34 @@
|
||||
// out: false, sourceMap: false, main: ../style.less
|
||||
.modal.save-as {
|
||||
width: 500px;
|
||||
height: 300px;
|
||||
top: calc(~'50% - 200px');
|
||||
width: 600px;
|
||||
height: 400px;
|
||||
top: calc(~'50% - 250px');
|
||||
|
||||
section{
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
label{
|
||||
margin-top: 22px;
|
||||
font-size: 14px;
|
||||
color: #878787;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
article {
|
||||
|
||||
label {
|
||||
color: #002680;
|
||||
font-size: 24px;
|
||||
font-weight: 500;
|
||||
overflow: hidden;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
input {
|
||||
padding: 5px;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #6d6d6d;
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: none;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
padding: 0 4px;
|
||||
padding: 0 20px;
|
||||
align-items: center;
|
||||
justify-content: stretch;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,42 @@
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
|
||||
.notes_textarea{
|
||||
border-radius: 2px;
|
||||
height: 97px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: solid 1px #bbbcbc;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
.select_folder{
|
||||
height: 48px;
|
||||
background-color: #fff;
|
||||
padding: 0 20px;
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
color: #6d6d6d;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: none;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
justify-content: stretch;
|
||||
padding-right: 25px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.description_lbl{
|
||||
margin-top: 22px;
|
||||
font-size: 14px;
|
||||
color: #878787;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.tab-header {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
@@ -173,7 +209,7 @@
|
||||
}
|
||||
|
||||
footer {
|
||||
height: 82px;
|
||||
height: 64px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
@@ -256,11 +292,11 @@
|
||||
align-items: center;
|
||||
display: flex;
|
||||
border-radius: 7px;
|
||||
|
||||
|
||||
&.fa-check-circle {
|
||||
color: #90BF3D;
|
||||
}
|
||||
|
||||
|
||||
&.fa-check-circle.undone-step {
|
||||
color: #1791FF;
|
||||
}
|
||||
@@ -474,6 +510,8 @@ article {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 5px;
|
||||
border: 2px solid #979797;
|
||||
box-sizing: border-box;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.submit {
|
||||
|
||||
@@ -10,6 +10,39 @@
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
.setup .notes_textarea {
|
||||
border-radius: 2px;
|
||||
height: 97px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: solid 1px #bbbcbc;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
resize: none;
|
||||
}
|
||||
.setup .select_folder {
|
||||
height: 48px;
|
||||
background-color: #fff;
|
||||
padding: 0 20px;
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
color: #6d6d6d;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: none;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
justify-content: stretch;
|
||||
padding-right: 25px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
.setup .description_lbl {
|
||||
margin-top: 22px;
|
||||
font-size: 14px;
|
||||
color: #878787;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.setup .tab-header {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
@@ -144,7 +177,7 @@
|
||||
width: 100%;
|
||||
}
|
||||
.setup .modal section.body footer {
|
||||
height: 82px;
|
||||
height: 64px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
@@ -385,6 +418,8 @@ article .box .body {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 5px;
|
||||
border: 2px solid #979797;
|
||||
box-sizing: border-box;
|
||||
align-items: center;
|
||||
}
|
||||
.box .submit {
|
||||
margin: auto;
|
||||
@@ -546,6 +581,15 @@ article .box .body {
|
||||
.modal.m155 .content-real-showval input {
|
||||
margin-left: auto;
|
||||
}
|
||||
.modal.m155 .content-modal-showval {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.modal.m155 .content-modal-showval span {
|
||||
word-wrap: break-word;
|
||||
max-width: 700px;
|
||||
font-size: 30px;
|
||||
}
|
||||
.modal.m155 .content-btn {
|
||||
width: 592px;
|
||||
box-shadow: 0 0px 3px 0 rgba(0, 0, 0, 0.4);
|
||||
@@ -1354,7 +1398,7 @@ article .box .body {
|
||||
justify-content: center;
|
||||
}
|
||||
.backdrop.nc {
|
||||
z-index: 700;
|
||||
z-index: 1002;
|
||||
}
|
||||
.backdrop.internal {
|
||||
height: calc(100vh - 80px);
|
||||
@@ -1637,7 +1681,6 @@ article .box .body {
|
||||
.modal.create-maintenance .title .description_lbl,
|
||||
.modal.create-maintenance .description .description_lbl {
|
||||
margin-top: 22px;
|
||||
margin-left: 24px;
|
||||
font-size: 14px;
|
||||
color: #878787;
|
||||
margin-bottom: 4px;
|
||||
@@ -2521,7 +2564,7 @@ article .box .body {
|
||||
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-header .subtitle .title,
|
||||
.modal.modal-load-program .modal-add-element-queue-body .selected-item .selected-item-header .subtitle .title,
|
||||
.modal.modal-add-element-queue .modal-add-element-queue-body .selected-item .selected-item-header .subtitle .title {
|
||||
width: 110px;
|
||||
min-width: 130px;
|
||||
text-align: right;
|
||||
color: #002680;
|
||||
}
|
||||
@@ -2591,6 +2634,9 @@ article .box .body {
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.modal.modal-load-program .modal-load-program-body .selected-item .selected-item-body .selected-item-body-image .container img,
|
||||
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-body .selected-item-body-image .container img,
|
||||
@@ -2637,6 +2683,13 @@ article .box .body {
|
||||
height: calc(100% - 360px);
|
||||
flex-flow: column;
|
||||
}
|
||||
.modal.modal-load-program .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .key,
|
||||
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .key,
|
||||
.modal.modal-load-program .modal-add-element-queue-body .selected-item .selected-item-body .selected-item-body-description .key,
|
||||
.modal.modal-add-element-queue .modal-add-element-queue-body .selected-item .selected-item-body .selected-item-body-description .key {
|
||||
width: 200px;
|
||||
font-weight: 800;
|
||||
}
|
||||
.modal.modal-load-program .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .row,
|
||||
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .row,
|
||||
.modal.modal-load-program .modal-add-element-queue-body .selected-item .selected-item-body .selected-item-body-description .row,
|
||||
@@ -3456,7 +3509,7 @@ article .box .body {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #cccccc;
|
||||
background: #ffffff;
|
||||
top: 0;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
@@ -4049,9 +4102,7 @@ article .box .body {
|
||||
flex-flow: column;
|
||||
}
|
||||
.modal.create-user .title .title_lbl,
|
||||
.modal.create-user .description .title_lbl,
|
||||
.modal.create-user .title .description_lbl,
|
||||
.modal.create-user .description .description_lbl {
|
||||
.modal.create-user .description .title_lbl {
|
||||
margin-top: 22px;
|
||||
margin-left: 24px;
|
||||
font-size: 14px;
|
||||
@@ -4296,9 +4347,10 @@ article .box .body {
|
||||
.dashboard .first_col .timing-area .start time,
|
||||
.dashboard .first_col .timing-area .current time,
|
||||
.dashboard .first_col .timing-area .end time {
|
||||
font-size: 120px;
|
||||
font-size: 100px;
|
||||
font-weight: 300;
|
||||
z-index: 1;
|
||||
max-height: 140px;
|
||||
}
|
||||
.dashboard .first_col .timing-area .start::before {
|
||||
background-image: url(/assets/svg/dashboard-top-left.svg);
|
||||
@@ -4551,6 +4603,10 @@ article .box .body {
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
}
|
||||
.warmers .icon {
|
||||
font-size: 30px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.slider {
|
||||
display: grid;
|
||||
grid-template-columns: 48px 1fr 48px;
|
||||
@@ -5062,9 +5118,7 @@ article .box .body {
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
|
||||
display: grid;
|
||||
grid-template-columns: 48px 101px;
|
||||
grid-template-rows: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
.modal.processo-info header .tab-header button span {
|
||||
margin: auto;
|
||||
@@ -5516,6 +5570,25 @@ select:focus {
|
||||
color: #002680;
|
||||
flex: 1;
|
||||
}
|
||||
.input-select {
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #6d6d6d;
|
||||
min-width: 200px;
|
||||
width: fit-content;
|
||||
height: 48px;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: none;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
padding: 0 10px;
|
||||
align-items: center;
|
||||
justify-content: stretch;
|
||||
padding-right: 25px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
.input-area {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -5979,8 +6052,9 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.togglebutton label .toggle.error {
|
||||
background-color: rgba(255, 0, 0, 0.7);
|
||||
background-color: rgba(255, 0, 0, 0.7) !important;
|
||||
color: #222;
|
||||
background-image: none !important;
|
||||
}
|
||||
.togglebutton label .toggle,
|
||||
.togglebutton label input[type=checkbox][disabled] + .toggle {
|
||||
@@ -6601,6 +6675,9 @@ footer .machine-area {
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
footer .machine-area img {
|
||||
margin: 0px 5px;
|
||||
}
|
||||
footer .container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -10667,6 +10744,53 @@ footer .container button.big:before {
|
||||
margin: 4px 0 4px 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.card-folder-path .context-menu {
|
||||
position: relative;
|
||||
width: 40px;
|
||||
}
|
||||
.card-folder-path .context-menu .context-area {
|
||||
top: 50px;
|
||||
display: none;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
||||
position: absolute;
|
||||
width: 300px;
|
||||
left: -126px;
|
||||
padding-inline-start: 0;
|
||||
padding-inline-end: 0;
|
||||
}
|
||||
.card-folder-path .context-menu .context-area.show {
|
||||
display: block !important;
|
||||
z-index: 10;
|
||||
}
|
||||
.card-folder-path .context-menu .context-area li {
|
||||
list-style-type: none;
|
||||
height: 62px;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
|
||||
color: #545454;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 0 28px;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.card-folder-path .context-menu .context-area li:last-of-type {
|
||||
border-bottom: none;
|
||||
}
|
||||
.card-folder-path .context-menu .context-area:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -15px;
|
||||
left: calc(50% - 8px);
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 15px solid transparent;
|
||||
border-right: 15px solid transparent;
|
||||
border-bottom: 15px solid #fff;
|
||||
}
|
||||
.card-folder-path:not(.disabled):active {
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
box-shadow: none;
|
||||
@@ -23794,30 +23918,31 @@ footer .container button.big:before {
|
||||
color: #4b4b4b;
|
||||
}
|
||||
.modal.save-as {
|
||||
width: 500px;
|
||||
height: 300px;
|
||||
top: calc(50% - 200px);
|
||||
width: 600px;
|
||||
height: 400px;
|
||||
top: calc(50% - 250px);
|
||||
}
|
||||
.modal.save-as article label {
|
||||
color: #002680;
|
||||
font-size: 24px;
|
||||
font-weight: 500;
|
||||
overflow: hidden;
|
||||
margin-bottom: 10px;
|
||||
.modal.save-as section {
|
||||
display: block !important;
|
||||
}
|
||||
.modal.save-as label {
|
||||
margin-top: 22px;
|
||||
font-size: 14px;
|
||||
color: #878787;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.modal.save-as article input {
|
||||
padding: 5px;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #6d6d6d;
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
|
||||
border: none;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
padding: 0 4px;
|
||||
padding: 0 20px;
|
||||
align-items: center;
|
||||
justify-content: stretch;
|
||||
}
|
||||
|
||||
@@ -7,301 +7,301 @@
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="disegno-quote-velocita-stampo.svg"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 297 210"
|
||||
width="297"
|
||||
height="210"
|
||||
width="297">
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="disegno-quote-velocita-stampo.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
|
||||
<sodipodi:namedview
|
||||
inkscape:object-nodes="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:cy="51.482576"
|
||||
inkscape:cx="187.49592"
|
||||
inkscape:zoom="2.9247028"
|
||||
showgrid="false"
|
||||
id="namedview907"
|
||||
inkscape:window-height="1001"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
inkscape:document-rotation="0"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
inkscape:document-rotation="0"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1056"
|
||||
id="namedview907"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.9247028"
|
||||
inkscape:cx="187.49592"
|
||||
inkscape:cy="51.482576"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:object-nodes="false" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:perspective
|
||||
id="perspective32764"
|
||||
inkscape:persp3d-origin="148.5 : 70 : 1"
|
||||
inkscape:vp_z="297 : 105 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 105 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="297 : 105 : 1"
|
||||
inkscape:persp3d-origin="148.5 : 70 : 1"
|
||||
id="perspective32764" />
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
inkscape:stockid="ExperimentalArrow"
|
||||
orient="auto-start-reverse"
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker1181"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse"
|
||||
inkscape:stockid="ExperimentalArrow">
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
id="path1179"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path1179" />
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible;"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow1Lend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend">
|
||||
<path
|
||||
transform="scale(0.8) rotate(180) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path912" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="marker1176"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1055"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="TriangleOutL"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.8)"
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
id="path1162" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker4178">
|
||||
<path
|
||||
id="path4176"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker4066">
|
||||
<path
|
||||
id="path4064"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker3448">
|
||||
<path
|
||||
id="path3446"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker3312"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path3310" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="StopL"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.8)"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0.0,5.65 L 0.0,-5.65"
|
||||
id="path1189" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker1984">
|
||||
<path
|
||||
id="path1982"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker1920">
|
||||
<path
|
||||
id="path1918"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker1502"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.6) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path1500" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow2Sstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.3) translate(-2.3,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
id="path1050" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker1406"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.4) translate(10,0)"
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path1404" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow2Mend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
id="path1047" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow2Mstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.6) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
id="path1044" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Mstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.4) translate(10,0)"
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
id="path912"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path1026" />
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
transform="scale(0.8) rotate(180) translate(12.5,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
id="ExperimentalArrow"
|
||||
style="overflow:visible"
|
||||
id="marker1176"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.8)"
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
id="path1055" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="TriangleOutL"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1162"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker4178"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path1273" />
|
||||
id="path4176" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker4066"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path4064" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker3448"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path3446" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3"
|
||||
refX="5"
|
||||
id="ExperimentalArrow-5">
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="marker3312">
|
||||
<path
|
||||
id="path1273-2"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
id="path3310"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="StopL"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1189"
|
||||
d="M 0.0,5.65 L 0.0,-5.65"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker1984"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path1982" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker1920"
|
||||
refX="5.0"
|
||||
refY="3.0"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
id="path1918" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="marker1502"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1500"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(0.6) translate(0,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Sstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1050"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(0.3) translate(-2.3,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="marker1406"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1404"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
transform="scale(0.4) translate(10,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Mend"
|
||||
style="overflow:visible;">
|
||||
<path
|
||||
id="path1047"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(0.6) rotate(180) translate(0,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Mstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1044"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(0.6) translate(0,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow1Mstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path1026"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
|
||||
transform="scale(0.4) translate(10,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3"
|
||||
refX="5"
|
||||
id="ExperimentalArrow-2">
|
||||
refY="3.0"
|
||||
refX="5.0"
|
||||
id="ExperimentalArrow">
|
||||
<path
|
||||
id="path1273-1"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
id="path1273"
|
||||
d="m 10,3 -10,3 0,-6 z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3"
|
||||
refX="5"
|
||||
id="ExperimentalArrow-3">
|
||||
<path
|
||||
id="path1273-6"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
|
||||
</marker>
|
||||
<marker
|
||||
id="marker1984-1"
|
||||
id="ExperimentalArrow-5"
|
||||
refX="5"
|
||||
refY="3"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
id="path1982-1" />
|
||||
id="path1273-2" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="StopL-8"
|
||||
style="overflow:visible">
|
||||
id="ExperimentalArrow-2"
|
||||
refX="5"
|
||||
refY="3"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1189-1"
|
||||
d="M 0,5.65 V -5.65"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
id="path1273-1" />
|
||||
</marker>
|
||||
<marker
|
||||
id="ExperimentalArrow-3"
|
||||
refX="5"
|
||||
refY="3"
|
||||
orient="auto-start-reverse">
|
||||
<path
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
id="path1273-6" />
|
||||
</marker>
|
||||
<marker
|
||||
orient="auto-start-reverse"
|
||||
refY="3"
|
||||
refX="5"
|
||||
id="marker1984-1">
|
||||
<path
|
||||
id="path1982-1"
|
||||
d="M 10,3 0,6 V 0 Z"
|
||||
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="StopL-8"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="scale(0.8)"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
d="M 0,5.65 V -5.65"
|
||||
id="path1189-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<metadata
|
||||
@@ -319,227 +319,207 @@
|
||||
<g
|
||||
id="layer1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path963"
|
||||
style="fill:#979797;fill-opacity:1;stroke:#979797;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 156.931,209.46621 156.11454,0.72523508"
|
||||
style="fill:#979797;fill-opacity:1;stroke:#979797;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path963"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path967"
|
||||
d="m 26.520225,102.56968 101.609595,0.0638 v 0 0 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 27.881686,115.27013 26.766659,0.0328 v 0 0 0"
|
||||
id="path967-2" />
|
||||
d="m 26.520225,170.56968 101.609595,0.0638 v 0 0 0"
|
||||
id="path967"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path967-2"
|
||||
d="m 27.881686,183.27013 26.766659,0.0328 v 0 0 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,36.848572,131.73977)"
|
||||
id="g842"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,36.848572,63.739768)">
|
||||
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round">
|
||||
<rect
|
||||
id="Rectangle-Copy"
|
||||
x="11"
|
||||
y="147"
|
||||
height="48"
|
||||
width="334"
|
||||
height="48" />
|
||||
y="147"
|
||||
x="11"
|
||||
id="Rectangle-Copy" />
|
||||
<rect
|
||||
id="Rectangle-Copy-2"
|
||||
x="0"
|
||||
y="199"
|
||||
height="4"
|
||||
width="356"
|
||||
height="4" />
|
||||
y="199"
|
||||
x="0"
|
||||
id="Rectangle-Copy-2" />
|
||||
<polygon
|
||||
id="Rectangle"
|
||||
points="68,147 98,0 257.62107,0 287.62107,147 " />
|
||||
points="257.62107,0 287.62107,147 68,147 98,0 "
|
||||
id="Rectangle" />
|
||||
<polygon
|
||||
id="polygon840"
|
||||
points="257.62107,147 287.62107,179 68,179 98,147 "
|
||||
transform="matrix(1,0,0,-1,0,326)"
|
||||
points="68,179 98,147 257.62107,147 287.62107,179 " />
|
||||
id="polygon840" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.506214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 128.13064,169.64777 -0.94836,-79.838053 v 0"
|
||||
id="path1004"
|
||||
d="m 128.13064,101.64777 -0.94836,-79.838053 v 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.506214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.507232;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 7.7467941,90.012593 144.96042,89.468186 v 0 0"
|
||||
id="path1006"
|
||||
d="M 7.7467941,22.012593 144.96042,21.468186 v 0 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.507232;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 81.767182,90.017085 V 100.08673"
|
||||
id="path1012"
|
||||
d="M 81.767182,22.017085 V 32.086727"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1014"
|
||||
d="m 31.419476,115.38155 -5.26e-4,69.84397 v 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.510365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1016"
|
||||
d="M 14.545513,185.5762 141.91289,185.30405"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1018"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.530934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 169.07902,100.69655 32.94825,0.0636 v 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.530934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path1018"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.420779;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:"
|
||||
d="M 136.74199,21.332161 V 32.475182"
|
||||
id="path1012-1" />
|
||||
id="path1012-1"
|
||||
d="M 136.74199,89.332161 V 100.47518"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.420779;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.573405;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#StopL)"
|
||||
d="m 8.1373094,90.089263 v 7.19921"
|
||||
id="path1012-1-6"
|
||||
d="m 8.1373094,22.089263 v 7.19921"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.573405;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#StopL)" />
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3838"
|
||||
style="fill:none;stroke:#bbbcbd;stroke-width:0.525286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 209.62896,109.94961 h -40.55073 v 0"
|
||||
style="fill:none;stroke:#bbbcbd;stroke-width:0.525286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path3838"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4058"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.517246;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 274.94556,100.96858 h 16.60132"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.517246;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path4058"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4060"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.505291;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 278.21139,114.84836 H 291.2747"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.505291;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path4060"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5132;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1012-9"
|
||||
d="m 290.73041,100.87214 v 14.2521"
|
||||
id="path1012-9" />
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5132;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,184.30533,62.410816)"
|
||||
id="g918"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,184.30533,62.410816)">
|
||||
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round">
|
||||
<rect
|
||||
id="Rectangle-Copy-5"
|
||||
x="11"
|
||||
y="147"
|
||||
height="48"
|
||||
width="334"
|
||||
height="48" />
|
||||
y="147"
|
||||
x="11"
|
||||
id="Rectangle-Copy-5" />
|
||||
<rect
|
||||
id="Rectangle-Copy-2-3"
|
||||
x="0"
|
||||
y="199"
|
||||
height="4"
|
||||
width="356"
|
||||
height="4" />
|
||||
y="199"
|
||||
x="0"
|
||||
id="Rectangle-Copy-2-3" />
|
||||
<polygon
|
||||
id="Rectangle-1"
|
||||
points="257.62107,0 287.62107,147 68,147 98,0 " />
|
||||
points="257.62107,0 287.62107,147 68,147 98,0 "
|
||||
id="Rectangle-1" />
|
||||
<polygon
|
||||
id="polygon916"
|
||||
points="257.62107,147 287.62107,179 68,179 98,147 "
|
||||
transform="matrix(1,0,0,-1,0,326)"
|
||||
points="257.62107,147 287.62107,179 68,179 98,147 " />
|
||||
id="polygon916" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.544692;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1012-5"
|
||||
d="M 178.87573,62.402301 V 100.34339"
|
||||
id="path1012-5" />
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.544692;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6954"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 209.90111,62.050773 H 178.05927"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path6954"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7676"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 290.73042,115.10538 v 4.08228 0"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path7676"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7678"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.585901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:"
|
||||
d="M 172.07191,96.971722 V 109.67746"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.585901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:" />
|
||||
id="path7678"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7680"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 172.07191,110.04689 v 8.33945"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="path7680"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1012-1-6-1"
|
||||
d="M 28.871798,89.809207 V 170.21125"
|
||||
style="fill:none;stroke:#bbbcbc;stroke-width:0.510445;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 28.871798,21.809207 V 102.21125"
|
||||
id="path1012-1-6-1" />
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 178.74528,61.891705 -1.99023,4.161391 h 3.98046 z"
|
||||
id="path32784"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784"
|
||||
d="m 178.74528,61.891705 -1.99023,4.161391 h 3.98046 z"
|
||||
id="path32784-2"
|
||||
d="m 81.78039,89.621142 -1.99023,4.16139 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 81.78039,21.621142 -1.99023,4.16139 h 3.98046 z"
|
||||
id="path32784-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 28.948815,21.983004 -1.99023,4.16139 h 3.98046 z"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-6"
|
||||
inkscape:connector-curvature="0" />
|
||||
d="m 28.948815,89.983004 -1.99023,4.16139 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.1418572,21.802077 -1.99023,4.16139 h 3.9804598 z"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
d="m 8.1418572,89.802077 -1.99023,4.16139 h 3.9804598 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 31.481832,115.52385 -1.99023,4.16139 h 3.98046 z"
|
||||
id="path32784-57"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 290.75461,101.04944 -1.99023,4.16139 h 3.98046 z"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-51"
|
||||
inkscape:connector-curvature="0" />
|
||||
d="m 290.75461,101.04944 -1.99023,4.16139 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 172.0645,109.91501 -1.99023,4.16139 h 3.98046 z"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-23"
|
||||
inkscape:connector-curvature="0" />
|
||||
d="m 172.0645,109.91501 -1.99023,4.16139 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 81.961325,35.733683 -1.99023,-3.6186 h 3.98046 z"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-3"
|
||||
d="m 81.961325,103.73368 -1.99023,-3.6186 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 136.96407,103.64323 -1.99023,-3.6186 h 3.98046 z"
|
||||
id="path32784-3-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-3-7"
|
||||
d="m 136.96407,35.643226 -1.99023,-3.6186 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-3-73"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 172.24542,100.41618 -1.99023,-3.618595 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
id="path32784-3-73"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-3-2"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 178.93983,100.41619 -1.99023,-3.6186 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
id="path32784-3-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-3-70"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 290.75462,114.89059 -1.99023,-3.6186 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
id="path32784-3-70"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 127.93118,170.04456 -1.99023,-3.6186 h 3.98046 z"
|
||||
id="path32784-3-5"
|
||||
d="m 127.93118,102.04456 -1.99023,-3.618604 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32784-3-24"
|
||||
d="m 31.481836,185.27239 -1.99023,-3.6186 h 3.98046 z"
|
||||
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB |
@@ -4,5 +4,5 @@
|
||||
"enabled": true,
|
||||
"apiServerUrl": "http://localhost:9000/"
|
||||
},
|
||||
"allUIVisible": true
|
||||
"allUIVisible": false
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
<body>
|
||||
<app>
|
||||
<img src="/assets/icons/png/bg.png" style="display:hidden">
|
||||
<div id="loading-spinner"><i class="fa fa-circle-o-notch fa-spin"></i></div>
|
||||
</app>
|
||||
<script src="/dist/vendors~main.js" type="text/javascript"></script>
|
||||
|
||||
@@ -18,5 +18,7 @@ declare module server {
|
||||
terminated: boolean;
|
||||
running: boolean;
|
||||
hasError: boolean;
|
||||
category: string;
|
||||
subCategory_1: string;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ declare module signalr_process {
|
||||
type: string;
|
||||
toDelete: boolean;
|
||||
toDisplay: boolean;
|
||||
isM156: boolean;
|
||||
id: number;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import Component from "vue-class-component";
|
||||
import { Watch } from "vue-property-decorator";
|
||||
import { UsersService } from "./services/usersService";
|
||||
import { KeyboardHelper } from "./app_modules_thermo/components/KeyboardHelper";
|
||||
import printGantt from "@/app_modules_thermo/processo/components/printProcesso.vue";
|
||||
|
||||
declare var cmsClient;
|
||||
|
||||
@@ -37,6 +38,7 @@ declare var cmsClient;
|
||||
dashboard: Dashboard,
|
||||
predashboard: PreDashboard,
|
||||
alarmList,
|
||||
printGantt
|
||||
}
|
||||
})
|
||||
export default class app extends Vue {
|
||||
@@ -56,7 +58,8 @@ export default class app extends Vue {
|
||||
loadingOperations = 0;
|
||||
HMIsrc = null;
|
||||
hub: Hub = null;
|
||||
prioritizeWindowsButtons = false;
|
||||
prioritizeWindowsButtons1 = false;
|
||||
prioritizeWindowsButtons2 = false;
|
||||
|
||||
beforeMount() {
|
||||
moment.locale((window.navigator as any).userLanguage || window.navigator.language);
|
||||
@@ -64,6 +67,12 @@ export default class app extends Vue {
|
||||
mounted() {
|
||||
let ms = messageService;
|
||||
|
||||
// window.oncontextmenu = function (event) {
|
||||
// event.preventDefault();
|
||||
// event.stopPropagation();
|
||||
// return false;
|
||||
// };
|
||||
|
||||
// if cms is connected
|
||||
if (typeof cmsClient != "undefined")
|
||||
this.HMIsrc = cmsClient.getScreenBase64();
|
||||
@@ -74,12 +83,12 @@ export default class app extends Vue {
|
||||
|
||||
ms.subscribeToChannel("show-modal-login", args => {
|
||||
this.applyBlur = true;
|
||||
this.prioritizeWindowsButtons = true;
|
||||
this.prioritizeWindowsButtons1 = true;
|
||||
});
|
||||
|
||||
ms.subscribeToChannel("hide-modal-login", args => {
|
||||
this.applyBlur = false;
|
||||
this.prioritizeWindowsButtons = false;
|
||||
this.prioritizeWindowsButtons1 = false;
|
||||
});
|
||||
|
||||
ms.subscribeToChannel("hide-modal", args => {
|
||||
@@ -88,10 +97,12 @@ export default class app extends Vue {
|
||||
|
||||
ms.subscribeToChannel("show-modal-nc-called", args => {
|
||||
this.applyBlurNc = true;
|
||||
this.prioritizeWindowsButtons2 = true;
|
||||
});
|
||||
|
||||
ms.subscribeToChannel("hide-modal-nc-called", args => {
|
||||
this.applyBlurNc = false;
|
||||
this.prioritizeWindowsButtons2 = false;
|
||||
});
|
||||
|
||||
ms.subscribeToChannel("show-modal-internal", args => {
|
||||
@@ -170,8 +181,13 @@ export default class app extends Vue {
|
||||
return this.$store.state.isShowPreDashboard;
|
||||
}
|
||||
|
||||
get prioritizeWindowsButtons() {
|
||||
return this.prioritizeWindowsButtons1 || this.prioritizeWindowsButtons2;
|
||||
}
|
||||
|
||||
onmousedown() {
|
||||
KeyboardHelper.hideKeyboard();
|
||||
messageService.publishToChannel('hideall');
|
||||
}
|
||||
|
||||
@Watch("isMainViewLiftedUp")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="container" @mousedown="onmousedown">
|
||||
<div id="app">
|
||||
<app-header :class="{'blur':applyBlur}"></app-header>
|
||||
<app-header :class="{'blur':applyBlur || applyBlurNc}"></app-header>
|
||||
<dashboard v-if="statusDashboard"></dashboard>
|
||||
<predashboard v-if="statusPreDashboard"></predashboard>
|
||||
<alarm-list :applyBlur="applyBlur"></alarm-list>
|
||||
<alarm-list :applyBlur="applyBlur || applyBlurNc"></alarm-list>
|
||||
|
||||
<div
|
||||
id="main-view"
|
||||
@@ -18,11 +18,12 @@
|
||||
<paddle></paddle>
|
||||
|
||||
<app-footer :class="{'blur':(applyBlur || applyBlurNc)}"></app-footer>
|
||||
<print-gantt></print-gantt>
|
||||
</div>
|
||||
<modal-container containerName="modal-login" name="modal-login"></modal-container>
|
||||
<keyboard></keyboard>
|
||||
|
||||
<div class="window-buttons" :class="{prioritize: prioritizeWindowsButtons}">
|
||||
<div class="window-buttons" :class="{prioritize: prioritizeWindowsButtons, 'blur':(applyBlurNc && !prioritizeWindowsButtons)}">
|
||||
<button
|
||||
class="gray square close"
|
||||
@click="sendMessage('hide')"
|
||||
@@ -34,7 +35,8 @@
|
||||
:title="'header_tooltip_btn_close' | localize('Close the application')"
|
||||
>×</button>
|
||||
</div>
|
||||
<modal-container name="modal"></modal-container>
|
||||
<modal-container name="modal" :class="{'blur':applyBlurNc}"></modal-container>
|
||||
<modal-nc-container name="modal-nc"></modal-nc-container>
|
||||
</div>
|
||||
</template>
|
||||
<script src="./App.ts" lang="ts"></script>
|
||||
|
||||
@@ -39,7 +39,7 @@ messageService.subscribeToChannel("show-contact-info", () => { ModalHelper.ShowM
|
||||
|
||||
// messageService.subscribeToChannel("show-axes-calibration", () => { ModalHelper.ShowNcModal(AxesCalibration); });
|
||||
// messageService.subscribeToChannel("hide-axes-calibration", () => { ModalHelper.HideNcModal(AxesCalibration); });
|
||||
// messageService.subscribeToChannel("show-m155-questions", () => { ModalHelper.ShowNextM155Modal(); });
|
||||
messageService.subscribeToChannel("show-m155-questions", () => { ModalHelper.ShowNextM155Modal(); });
|
||||
// messageService.subscribeToChannel("show-nochange-page", () => {
|
||||
// ModalHelper.ShowMessage(
|
||||
// Vue.filter('localize')("modal_nochangepage_title", "Operazione non possibile"),
|
||||
@@ -61,6 +61,7 @@ async function loadMachineConfig() {
|
||||
machineStatusActions.setAreasConfg(store, result);
|
||||
|
||||
let mcresult = await machine.getMachineConfiguration();
|
||||
machineStatusActions.setWarmersParameters(store, mcresult.additionalParameters);
|
||||
|
||||
await prodService.GetProdPanel();
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
// CardFolderPath,
|
||||
// ModalIframe,
|
||||
ModalLoadProgram,
|
||||
Utilities,
|
||||
// ProgramManagement,
|
||||
// ModalJobAddParameter,
|
||||
// ModalEditJob,
|
||||
@@ -27,7 +28,7 @@ function injectRoutes(mainRoute, childroutes) {
|
||||
|
||||
export let routes = [
|
||||
// { path: "", component: Home, name: "home", meta: { title: "Dashboard" } },
|
||||
// { path: "/utilities", component: Utilities, meta: { title: "Utilities", area: "utilities" } },
|
||||
{ path: "/utilities", component: Utilities, meta: { title: "Utilities", area: "utilities" } },
|
||||
// { path: "/card-utilities", component: CardUtilities, meta: { title: "Card-Utilities", area: "card-utilities" } },
|
||||
// { path: "/card-tool-depot", component: CardToolDepot, meta: { title: "Card-Tool-Depot", area: "card-tool-depot" } },
|
||||
// { path: "/softkeys-prefered", component: SoftKeysPrefered, meta: { title: "Softkeys-Prefered", area: "softkeys-prefered" } },
|
||||
@@ -61,7 +62,7 @@ import { routes as ProgrPreriscaldoRoutes } from "@/app_modules_thermo/programma
|
||||
// import { routes as maintenance } from "./app_modules/maintenance/route";
|
||||
// import { routes as scada} from "./app_modules/scada/route";
|
||||
// import { routes as reports } from "./app_modules/reports/route";
|
||||
// import { routes as users } from "./app_modules/users/route";
|
||||
import { routes as users } from "./app_modules/users/route";
|
||||
|
||||
injectRoutes(routes, alarmRoutes);
|
||||
injectRoutes(routes, productionRoutes);
|
||||
@@ -71,7 +72,7 @@ injectRoutes(routes, ProgrPreriscaldoRoutes);
|
||||
// injectRoutes(routes, maintenance);
|
||||
// injectRoutes(routes, scada);
|
||||
// injectRoutes(routes, reports);
|
||||
// injectRoutes(routes, users);
|
||||
injectRoutes(routes, users);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
import { AppModel } from "src/store";
|
||||
import { Modal, ModalHelper } from "src/components/modals";
|
||||
import Component from "vue-class-component";
|
||||
import Vue from "vue";
|
||||
import { Hub } from "src/services";
|
||||
import { Factory, messageService } from "src/_base";
|
||||
import { Watch } from "vue-property-decorator";
|
||||
|
||||
@Component({ components: { modal: Modal } })
|
||||
export default class M155Dialog extends Vue{
|
||||
|
||||
data = null;
|
||||
value = 0;
|
||||
|
||||
MULTIPLE_BUTTONS = "MULTIPLE_BUTTONS";
|
||||
REAL = "REAL";
|
||||
SHOW_VAL = "SHOW_VAL"
|
||||
MODAL = "MODAL"
|
||||
|
||||
mounted(){
|
||||
this.data = ModalHelper.M155ModalData.data;
|
||||
this.value = -1;
|
||||
|
||||
// Populate translations
|
||||
if(this.data.isM156) {
|
||||
this.data.message = this.$options.filters.localize("m156_title_" + this.data.id, "Title");
|
||||
|
||||
for(const key in this.data.buttons){
|
||||
this.data.buttons[key] = this.$options.filters.localize("m156_" + this.data.id + "_button_" + this.data.buttons[key], "Title");
|
||||
}
|
||||
|
||||
if(this.data.buttons)
|
||||
Object.keys(this.data.buttons).forEach(btn => {
|
||||
btn = this.$options.filters.localize("m156_title_" + this.data.id, "Title");
|
||||
});
|
||||
}
|
||||
|
||||
messageService.subscribeToChannel("show-modal-nc", args => {
|
||||
this.data = ModalHelper.M155ModalData.data;
|
||||
});
|
||||
}
|
||||
|
||||
get process(){
|
||||
if(this.data)
|
||||
return this.data.process;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Watch("data")
|
||||
dataChanged(){
|
||||
this.value = -1;
|
||||
}
|
||||
|
||||
ischecked(k){
|
||||
return k == this.value;
|
||||
}
|
||||
|
||||
check(k){
|
||||
return this.value = k;
|
||||
}
|
||||
|
||||
canSendAnswer(){
|
||||
if(this.getType == this.MODAL)
|
||||
return false
|
||||
else if(this.getType == this.REAL)
|
||||
return this.value != null && this.value != undefined;
|
||||
else
|
||||
return this.value && this.value != -1;
|
||||
}
|
||||
|
||||
answerVisible(){
|
||||
if(this.getType == this.MODAL)
|
||||
return false
|
||||
return true;
|
||||
}
|
||||
|
||||
get getType(){
|
||||
if(this.data)
|
||||
return this.data.type
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
hide() {
|
||||
ModalHelper.M155ModalData.data.toDisplay = false;
|
||||
ModalHelper.HideThisM155Modal(ModalHelper.M155ModalData.data.processId);
|
||||
}
|
||||
|
||||
answer(){
|
||||
if(!this.data.isM156)
|
||||
Hub.Current.WriteM155Response(this.data.process,this.value);
|
||||
else
|
||||
Hub.Current.WriteM156Response(this.data.process,this.value);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<modal :title="'modal_m155_standard' | localize('Message from the machine')" class="m155" :class="{'multiple': getType != REAL}" name="modal" >
|
||||
<div v-if="data">
|
||||
<h2 v-if="getType != SHOW_VAL && getType != MODAL">{{data.message}}</h2>
|
||||
<div class="content-real" v-if="getType == REAL">
|
||||
<span>{{'modal_m155_value' | localize("Value: ")}}</span>
|
||||
<input type="number" min="0" max="4294967295" v-model="value">
|
||||
</div>
|
||||
|
||||
<div class="content-real-showval" v-if="getType == SHOW_VAL">
|
||||
<span>{{data.message}}</span>
|
||||
<input type="number" min="0" max="4294967295" v-model="data.value" disabled="disabled">
|
||||
</div>
|
||||
|
||||
<div class="content-modal-showval" v-if="getType == MODAL" >
|
||||
<span>{{data.message}}</span>
|
||||
</div>
|
||||
|
||||
<div v-if="getType == MULTIPLE_BUTTONS" >
|
||||
<div class="content-btn" v-for="(t,k) in data.buttons" :key="'m155_'+k" @click="check(k)">
|
||||
<input type="radio" name="radio-group" :checked="ischecked(k)" >
|
||||
<label for="datefixed">{{t}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer >
|
||||
<div class="pull-left">
|
||||
<button class="btn" @click="hide()">{{'modal_m155_hide_window' | localize("Hide")}}</button>
|
||||
</div>
|
||||
<div class="pull-right" v-if="answerVisible()" >
|
||||
<button class="btn btn-success" @click="answer()" :disabled="!canSendAnswer()">{{'confirm_request_confirm' | localize("Confirm")}}</button>
|
||||
</div>
|
||||
</footer>
|
||||
</modal>
|
||||
</template>
|
||||
<script src="./m155-dialog.ts" lang="ts"></script>
|
||||
|
||||
@@ -13,5 +13,6 @@ export {
|
||||
ContactInfoDialog,
|
||||
UserInfoDialog,
|
||||
UserInfo,
|
||||
CmsconnectInfoDialog
|
||||
CmsconnectInfoDialog,
|
||||
M155Questions
|
||||
}
|
||||
|
||||
@@ -1,45 +1,36 @@
|
||||
<template>
|
||||
<div class="arch">
|
||||
<div class="box-gauge">
|
||||
<div class="box-gauge" v-if="gaugeData && gaugeData.power">
|
||||
<gauge
|
||||
:min="gaugeData.power.minVal"
|
||||
:max="gaugeData.power.maxVal"
|
||||
:value="gaugeData.power.value"
|
||||
></gauge>
|
||||
<div
|
||||
v-if="gaugeData && gaugeData.power"
|
||||
class="value"
|
||||
>{{gaugeData.power.value | round(gaugeData.power.numDec)}}</div>
|
||||
<div v-if="gaugeData && gaugeData.power">
|
||||
<div class="value">{{gaugeData.power.value | round(gaugeData.power.numDec)}}</div>
|
||||
<div>
|
||||
<label>{{gaugeData.power.um}}</label>
|
||||
<label>{{gaugeData.power.label | localize("Potenza")}}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box-gauge">
|
||||
<div class="box-gauge" v-if="gaugeData && gaugeData.air">
|
||||
<gauge :min="gaugeData.air.minVal" :max="gaugeData.air.maxVal" :value="gaugeData.air.value"></gauge>
|
||||
<div
|
||||
v-if="gaugeData && gaugeData.air"
|
||||
class="value"
|
||||
>{{gaugeData.air.value | round(gaugeData.air.numDec)}}</div>
|
||||
<div v-if="gaugeData && gaugeData.air">
|
||||
<div class="value">{{gaugeData.air.value | round(gaugeData.air.numDec)}}</div>
|
||||
<div>
|
||||
<label>{{gaugeData.air.um}}</label>
|
||||
<label>{{gaugeData.air.label | localize("Aria")}}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box-gauge">
|
||||
<div class="box-gauge" v-if="gaugeData && gaugeData.vacuum">
|
||||
<gauge
|
||||
:min="gaugeData.vacuum.minVal"
|
||||
:max="gaugeData.vacuum.maxVal"
|
||||
:value="gaugeData.vacuum.value"
|
||||
:clockwise="false"
|
||||
></gauge>
|
||||
<div
|
||||
v-if="gaugeData && gaugeData.vacuum"
|
||||
class="value"
|
||||
>{{gaugeData.vacuum.value | round(gaugeData.vacuum.numDec)}}</div>
|
||||
<div v-if="gaugeData && gaugeData.vacuum">
|
||||
<div class="value">{{gaugeData.vacuum.value | round(gaugeData.vacuum.numDec)}}</div>
|
||||
<div>
|
||||
<label>{{gaugeData.vacuum.um}}</label>
|
||||
<label>{{gaugeData.vacuum.label | localize("Vuoto")}}</label>
|
||||
</div>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
font-family: "Work Sans";
|
||||
font-size: 47px;
|
||||
font-size: 40px;
|
||||
font-weight: 500;
|
||||
line-height: 1.01;
|
||||
padding-right: 1rem;
|
||||
|
||||
@@ -2,6 +2,7 @@ import Component from "vue-class-component";
|
||||
import Vue from "vue";
|
||||
import { Prop } from "vue-property-decorator";
|
||||
import lottie from "lottie-web";
|
||||
import { messageService } from "@/_base";
|
||||
|
||||
@Component({})
|
||||
export default class Combo extends Vue {
|
||||
@@ -11,7 +12,7 @@ export default class Combo extends Vue {
|
||||
|
||||
get options() {
|
||||
let result: { id: number, text: string, anim: string }[] = [];
|
||||
if (this.value.enumVal)
|
||||
if (this.value && this.value.enumVal)
|
||||
for (const key in this.value.enumVal) {
|
||||
if (this.value.enumVal.hasOwnProperty(key)) {
|
||||
const element = this.value.enumVal[key];
|
||||
@@ -42,7 +43,7 @@ export default class Combo extends Vue {
|
||||
}
|
||||
|
||||
mounted() {
|
||||
|
||||
messageService.subscribeToChannel('hideall', () => this.hideList());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,15 @@
|
||||
<template>
|
||||
<div class="combo">
|
||||
<div class="form" @click="showList" :class="{'error': value.status && value.status.hasError}">
|
||||
<div
|
||||
class="form"
|
||||
@click="showList"
|
||||
:class="{'error': value && value.status && value.status.hasError}"
|
||||
>
|
||||
{{currentValue}}
|
||||
<i v-if="opened" class="fa fa-chevron-up" />
|
||||
<i v-else class="fa fa-chevron-down" />
|
||||
</div>
|
||||
<div class="droplist" v-if="opened">
|
||||
<div class="droplist" v-if="opened" @mousedown.prevent.stop>
|
||||
<div
|
||||
class="droplist-item"
|
||||
v-for="opt in options"
|
||||
|
||||
@@ -18,29 +18,48 @@ export default class Keyboard extends Vue {
|
||||
@Prop()
|
||||
value: string;
|
||||
|
||||
get Value() {
|
||||
return this.actualValue.setpointHMI;
|
||||
}
|
||||
|
||||
set Value(v: number) {
|
||||
try {
|
||||
let scale = Math.pow(10, this.actualValue.numDec ?? 0);
|
||||
let result = Math.round(v * scale) / scale;
|
||||
|
||||
if (!Number.isNaN(result) && Number.isFinite(result))
|
||||
this.actualValue.setpointHMI = result;
|
||||
else
|
||||
this.actualValue.setpointHMI = v;
|
||||
} catch {
|
||||
this.actualValue.setpointHMI = v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
del() {
|
||||
this.actualValue.setpointHMI = 0;
|
||||
this.Value = 0;
|
||||
}
|
||||
|
||||
canc() {
|
||||
let temp = String(this.actualValue.setpointHMI);
|
||||
this.actualValue.setpointHMI = Number(temp.slice(0, -1))
|
||||
let temp = String(this.Value);
|
||||
this.Value = Number(temp.slice(0, -1))
|
||||
}
|
||||
|
||||
add(num: string) {
|
||||
if (this.point) {
|
||||
this.point += num;
|
||||
this.actualValue.setpointHMI = Number(this.point)
|
||||
this.Value = Number(this.point)
|
||||
} else {
|
||||
let temp = String(this.actualValue.setpointHMI);
|
||||
let temp = String(this.Value);
|
||||
temp += num;
|
||||
this.actualValue.setpointHMI = Number(temp)
|
||||
this.Value = Number(temp)
|
||||
}
|
||||
}
|
||||
|
||||
addpoint() {
|
||||
if (!this.point) {
|
||||
this.point = String(this.actualValue.setpointHMI);
|
||||
this.point = String(this.Value);
|
||||
this.point += ".";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,23 @@ export default class Numeric extends Vue {
|
||||
|
||||
focused: boolean = false;
|
||||
|
||||
get Value() {
|
||||
return this.value.setpointHMI;
|
||||
}
|
||||
|
||||
set Value(v: number) {
|
||||
try {
|
||||
let scale = Math.pow(10, this.value.numDec ?? 0);
|
||||
let result = Math.round(v * scale) / scale;
|
||||
if (!Number.isNaN(result) && Number.isFinite(result))
|
||||
this.value.setpointHMI = result;
|
||||
else
|
||||
this.value.setpointHMI = v;
|
||||
} catch {
|
||||
this.value.setpointHMI = v;
|
||||
}
|
||||
}
|
||||
|
||||
onFocus() {
|
||||
if (this.value && this.value.status && !this.value.status.enabled) return;
|
||||
let rect = this.$el.getBoundingClientRect();
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
<input
|
||||
type="number"
|
||||
ref="input"
|
||||
v-model.number="value.setpointHMI"
|
||||
v-model.number="Value"
|
||||
@focus="onFocus"
|
||||
@blur="onBlur"
|
||||
:id="id"
|
||||
:disabled="value.status && !value.status.enabled"
|
||||
/>
|
||||
<span v-if="value.unitMeasure">{{unitMeasure}}</span>
|
||||
<span v-if="value && value.unitMeasure">{{value.unitMeasure}}</span>
|
||||
</div>
|
||||
</template>
|
||||
<script src="./numeric.ts" lang="ts"></script>
|
||||
@@ -6,6 +6,7 @@ import { store, MachineStatusModel } from "@/store";
|
||||
import { SoftKeysConfigurationModel, machineInfoStore } from "@/store/machineInfo.store";
|
||||
import { Hub, machineService } from "@/services";
|
||||
import { Watch } from "vue-property-decorator";
|
||||
import { messageService } from "@/_base";
|
||||
|
||||
@Component({
|
||||
components: { softKey }
|
||||
@@ -60,6 +61,7 @@ export default class Paddle extends Vue {
|
||||
|
||||
async mounted() {
|
||||
this.loadData();
|
||||
messageService.subscribeToChannel('hideall', () => { this.isOpen = false; this.openFull = false; })
|
||||
}
|
||||
|
||||
@Watch("isOpen")
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<template>
|
||||
<div class="paddle" :class="{'open-half': isOpen && !openFull, 'open-full': isOpen && openFull}">
|
||||
<div
|
||||
class="paddle"
|
||||
:class="{'open-half': isOpen && !openFull, 'open-full': isOpen && openFull}"
|
||||
@mousedown.prevent.stop
|
||||
>
|
||||
<nav class="paddleButton" @click="isOpen = !isOpen; openFull = false;sendKeyCancel()">
|
||||
<div class="circles">
|
||||
<div></div>
|
||||
|
||||
@@ -4,6 +4,7 @@ import { Prop } from 'vue-property-decorator';
|
||||
|
||||
import { Hub } from "@/services";
|
||||
import Numeric from "./numeric";
|
||||
import { unitOfTime } from "moment";
|
||||
@Component({ name: "slider" })
|
||||
export default class Slider extends Vue {
|
||||
|
||||
@@ -33,39 +34,58 @@ export default class Slider extends Vue {
|
||||
this.value.setpointHMI = v;
|
||||
}
|
||||
|
||||
get step() {
|
||||
// var s = ((this.value.range.max - this.value.range.min) / (this.lines + 1));
|
||||
// var m = Math.pow(10, this.decimal);
|
||||
// return Math.round(s * m) / m
|
||||
return 1;
|
||||
};
|
||||
@Prop({ default: .2 })
|
||||
incrementingStep: number;
|
||||
|
||||
step: number = 1;
|
||||
initalStep: number = 1;
|
||||
// get step() {
|
||||
// var s = ((this.value.range.max - this.value.range.min) / (this.lines + 1));
|
||||
// var m = Math.pow(10, this.decimal);
|
||||
// return Math.round(s * m) / m
|
||||
// return 1;
|
||||
// };
|
||||
|
||||
mounted() {
|
||||
this.initalStep = 1 / Math.pow(10, this.value.numDec);
|
||||
this.step = this.initalStep;
|
||||
if (Number.isNaN(this.step)) this.step = 1;
|
||||
}
|
||||
|
||||
startIncrement() {
|
||||
if (!this.value.status.enabled) return;
|
||||
this.incrementing = setInterval(() => {
|
||||
var v = this.value.setpointHMI;
|
||||
if (v < this.value.range.max) {
|
||||
v += this.step;
|
||||
}
|
||||
if (v > this.value.range.max) {
|
||||
v = this.value.range.max;
|
||||
}
|
||||
this.actualvalue = v;
|
||||
}, 50);
|
||||
}
|
||||
this.incrementValue();
|
||||
this.incrementing = setInterval(this.incrementValue, 100);
|
||||
}
|
||||
|
||||
startDecrement() {
|
||||
if (!this.value.status.enabled) return;
|
||||
this.incrementing = setInterval(() => {
|
||||
var v = this.value.setpointHMI;
|
||||
if (v > this.value.range.min) {
|
||||
v -= this.step;
|
||||
}
|
||||
if (v < this.value.range.min) {
|
||||
v = this.value.range.min;
|
||||
}
|
||||
this.actualvalue = v;
|
||||
}, 50);
|
||||
if (!this.value.status.enabled) return;
|
||||
this.decrementValue();
|
||||
this.incrementing = setInterval(this.decrementValue, 100);
|
||||
}
|
||||
|
||||
decrementValue(){
|
||||
var v = this.value.setpointHMI;
|
||||
if (v < this.value.range.max) {
|
||||
v -= this.step;
|
||||
this.step += this.incrementingStep * this.initalStep;
|
||||
}
|
||||
if (v > this.value.range.max) {
|
||||
v = this.value.range.max;
|
||||
}
|
||||
this.actualvalue = parseFloat(v.toFixed(this.value.numDec));
|
||||
}
|
||||
|
||||
incrementValue(){
|
||||
var v = this.value.setpointHMI;
|
||||
if (v < this.value.range.max) {
|
||||
v += this.step;
|
||||
this.step += this.incrementingStep * this.initalStep;
|
||||
}
|
||||
if (v > this.value.range.max) {
|
||||
v = this.value.range.max;
|
||||
}
|
||||
this.actualvalue = parseFloat(v.toFixed(this.value.numDec));
|
||||
}
|
||||
|
||||
confirm() {
|
||||
@@ -74,7 +94,7 @@ export default class Slider extends Vue {
|
||||
clearInterval(this.incrementing);
|
||||
|
||||
this.incrementing = 0;
|
||||
|
||||
this.step = this.initalStep;
|
||||
};
|
||||
|
||||
|
||||
|
||||