예제 #1
0
        private Protocol prepareProtocol()
        {
            if (contextGroup.Count != contextDescription.Count)
            {
                // Both must be equally sized as they will be acessed by index
                return(null);
            }

            ProtocolHeaderData headerData = new ProtocolHeaderData();

            headerData.Title      = "Inbetriebnahme-Protokoll (intern)";
            headerData.Serial     = varDevSerial;
            headerData.Filename   = varDevFilename;
            headerData.DeviceType = varDevType;
            headerData.User       = varUser;
            headerData.Date       = varDate;

            // Creating a default (A4, portrait) page setup
            ProtocolPageSetup pageSetup = new ProtocolPageSetup();

            pageSetup.RightMargin_cm = 2.5;

            Protocol protocol = new Protocol(headerData, pageSetup);

            //
            // Add the group 'Montage'
            //
            bool headingPrinted = false;

            foreach (checklistdata item in varCheckList0)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Montage");
                    headingPrinted = true;
                }

                string context = item.context;

                string description = contextDescription[context];
                string user        = item.person;
                bool   ok          = item.ok;

                if (context.EndsWith("montage.vde"))
                {
                    protocol.AddHeading1("VDE-Prüfung");

                    var queryLib = new QueryLibraryCommon(devID);
                    protocol.AddCheckedParagraph(description, user, ok);
                    protocol.AddTable(queryLib.SelectVDETable(),
                                      TableDrawMode.Default);
                }
                else
                {
                    protocol.AddCheckedParagraph(description, user, ok);
                }
            }

            //
            // Add the group 'Grundeinstellungen'
            //
            var translations = new Dictionary <string, string>()
            {
                { "general.ipa", "IP-Adresse eingestellt" },
                { "kric.general.ipa", "IP-Adresse eingestellt" },
                { "kric.general.version", "Firmware Version" },
                { "general.params", "Geräteparameter konfiguriert" },
                { "kric.general.params", "Geräteparameter konfiguriert" },
                { "general.hellfeld", "Hellfeldmessung durchgeführt" },
                { "kric.general.hellfeld", "Hellfeldmessung durchgeführt" },
            };

            headingPrinted = false;
            foreach (checklistdata item in varCheckList1)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Grundeinstellungen");
                    headingPrinted = true;
                }

                string context = item.context;
                string value   = item.value;
                string description;

                if (!contextDescription.TryGetValue(context, out description))
                {
                    description = item.text;
                    if (description.Contains("Auckland"))
                    {
                        // This can only be the auckland / cupid version item
                        double version = double.TryParse(
                            value,
                            NumberStyles.Any,
                            CultureInfo.InvariantCulture,
                            out version) ? version : double.NaN;

                        if (!double.IsNaN(version) && version >= 6.00)
                        {
                            // This is a CUPID board
                            description = description.Replace("Auckland", "Cupid");
                        }
                    }

                    if (isKrRico && description.Contains("Eco"))
                    {
                        // KrRico board s have no ECO, taher it's called KMU
                        description = description.Replace("Eco", "KMU");
                    }
                }

                string user = item.person;
                bool   ok   = item.ok;

                // Some descriptions should be translated to be shorter.
                // .See dictionary 'translations' above.
                if (translations.ContainsKey(context))
                {
                    description = translations[context];
                }

                protocol.AddCheckedParagraph(description, value, user, ok);
                if (context == "kric.general.hellfeld")
                {
                    var    queryLib  = new QueryLibraryRefracto(devID);
                    string curveData = queryLib.SelectBrightField(false);
                    if (curveData.Length > 0)
                    {
                        protocol.AddTextParagraph("");

                        var curve = new DataPointsXYList(curveData, 1000);
                        protocol.AddChart(curve,
                                          0, 2050, 200,
                                          0, 3000, 0, "0",
                                          "10² Pixel", "");
                    }
                }
                else if (context == "general.hellfeld")
                {
                    var    queryLib  = new QueryLibraryRefracto(devID);
                    string curveData = queryLib.SelectBrightField(true);
                    if (curveData.Length > 0)
                    {
                        protocol.AddTextParagraph("");

                        var curve = new DataPointsXYList(curveData);
                        protocol.AddChart(curve,
                                          0, 2050, 200,
                                          0, 5000, 0, "0",
                                          "10² Pixel", "");
                    }
                }
            }

            //
            // Add the group 'Funktion'
            //
            headingPrinted = false;
            foreach (checklistdata item in varCheckList2)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Funktion");
                    headingPrinted = true;
                }

                string context = item.context;

                string description = contextDescription[context];
                string user        = item.person;
                bool   ok          = item.ok;

                protocol.AddCheckedParagraph(description, user, ok);
            }

            //
            // Add the group 'Justierung'
            //
            headingPrinted = false;
            foreach (checklistdata item in varCheckList3)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Justierung");
                    headingPrinted = true;
                }

                string context     = item.context;
                string description = contextDescription[context];
                string user        = item.person;
                bool   ok          = item.ok;


                if (context.EndsWith("calib.dr6000.temp"))
                {
                    if ((deviceType == CustomDeviceType.DS7500) ||
                        (deviceType == CustomDeviceType.DS7900))
                    {
                        user = "******";
                        protocol.AddCheckedParagraph(description, user, ok);
                    }
                    else
                    {
                        protocol.AddHeading2("Temperatur");
                        protocol.AddCheckedParagraph(description, user, ok);

                        var queryLib = new QueryLibraryCommon(devID);
                        protocol.AddTable(queryLib.SelectTempAdjustment(),
                                          TableDrawMode.Default);

                        var adjDate = queryLib.SelectTempAdjustDate();
                        if (adjDate == DateTime.MinValue)
                        {
                            protocol.AddTextParagraph(
                                "Datum der Justierung: nicht vorhanden");
                        }
                        else
                        {
                            protocol.AddTextParagraph(
                                $"Datum der Justierung: {adjDate}");
                        }

                        if (!isKrRico)
                        {
                            // For ECO devices also add the temp adjustment coeffs
                            protocol.AddTable(queryLib.SelectTempMeasCoeffs(),
                                              TableDrawMode.Default);
                        }
                    }
                }
                else if (context.EndsWith("calib.dr6000.meas"))
                {
                    protocol.AddHeading2("Messwert");
                    protocol.AddCheckedParagraph(description, user, ok);

                    var queryLib = new QueryLibraryRefracto(devID);
                    protocol.AddTable(queryLib.SelectMeasAdjustment(),
                                      TableDrawMode.SideBySideAuto);

                    var adjDate = queryLib.SelectMeasAdjustDate();
                    if (adjDate == DateTime.MinValue)
                    {
                        protocol.AddTextParagraph(
                            "Datum der Justierung: nicht vorhanden");
                    }
                    else
                    {
                        protocol.AddTextParagraph(
                            $"Datum der Justierung: {adjDate}");
                    }


                    if (!isKrRico)
                    {
                        // For ECO devices also add the meas adjustment coeffs
                        protocol.AddTable(queryLib.SelectMeasCoeffs(),
                                          TableDrawMode.Default);
                    }
                }
                else if (context.EndsWith("calib.dr6000.caldata"))
                {
                    protocol.AddHeading2("Justierdaten");
                    description = "Kurve geprüft";
                    protocol.AddCheckedParagraph(description, user, ok);

                    // Get the meas curve with its max. 50 values
                    var queryLib = new QueryLibraryRefracto(devID);
                    var curve    = queryLib.SelectMeasAdjustCurve();

                    // Taking this curve and creating an interpolated version
                    // of it using the known points and interpolate the missing
                    // ones in-between. This one will have 200 values.
                    var curveInterPolated = new DataPointsXYList(2000);
                    for (int i = 0; i < curve.Count; i++)
                    {
                        curveInterPolated.AppendInterpolated((int)curve.PointsX[i] / 100,
                                                             curve.PointsY[i]);
                    }

                    // TODO
                    //curveInterPolated.Extrapolate();

                    protocol.AddChart(curveInterPolated,
                                      0, 2050, 200,
                                      1.0, 1.7, 0, "0.0",
                                      "10² Pixel", "nD");
                }
                else if (context.EndsWith("calib.ds7000.pressure"))
                {
                    protocol.AddHeading2("Drucksensor");
                    protocol.AddCheckedParagraph(description, user, ok);

                    var queryLib = new QueryLibraryDensity(devID);
                    protocol.AddTable(queryLib.SelectPressureAdjustment(),
                                      TableDrawMode.Default);

                    var calDate = queryLib.SelectPressureAdjustDate();
                    if (calDate.Year > 1970)
                    {
                        protocol.AddTextParagraph(
                            $"Datum der Justierung: {calDate}");
                    }
                }
                else if (context.EndsWith("calib.p8000.meas"))
                {
                    protocol.AddHeading2("Messwert");
                    protocol.AddCheckedParagraph(description, user, ok);

                    var queryLib = new QueryLibraryPolari(devID);
                    protocol.AddTable(queryLib.SelectMeasAdjustment(),
                                      TableDrawMode.Default);

                    var calDate = queryLib.SelectMeasAdjustDate();
                    if (calDate.Year > 1970)
                    {
                        protocol.AddTextParagraph(
                            $"Datum der Justierung: {calDate}");
                    }
                }
                else
                {
                    protocol.AddCheckedParagraph(description, user, ok);
                }
            }

            //
            // Add the group 'Endtest'
            //
            headingPrinted = false;
            foreach (checklistdata item in varCheckList4)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Endtest");
                    headingPrinted = true;
                }

                string context     = item.context;
                string description = contextDescription[context];
                string user        = item.person;
                bool   ok          = item.ok;

                protocol.AddCheckedParagraph(description, user, ok);

                if (context.EndsWith("final.meas")) // TODO or only ".temp" ??
                {
                    var queryLib = new QueryLibraryCommon(devID);
                    protocol.AddTable(queryLib.SelectFinalMeas(),
                                      TableDrawMode.Default);
                }
            }

            //
            // Add the group 'Abschluss Software'
            //
            headingPrinted = false;
            foreach (checklistdata item in varCheckList5)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Abschluss Software");
                    headingPrinted = true;
                }

                string context     = item.context;
                string description = contextDescription[context];
                string user        = item.person;
                bool   ok          = item.ok;

                protocol.AddCheckedParagraph(description, user, ok);
            }

            //
            // Add the group 'Gehäuse'
            //
            headingPrinted = false;
            foreach (checklistdata item in varCheckList6)
            {
                if (headingPrinted == false)
                {
                    protocol.AddHeading1("Gehäuse");
                    headingPrinted = true;
                }

                string context     = item.context;
                string description = contextDescription[context];
                string user        = item.person;
                bool   ok          = item.ok;

                protocol.AddCheckedParagraph(description, user, ok);
            }

            //
            // Add the final area with date and space for user sign
            //
            string date = DateTime.Now.ToString("dd.MM.yyyy");

            string signText = Environment.NewLine;

            signText += Environment.NewLine;
            signText += Environment.NewLine;
            signText += Environment.NewLine;
            signText += Environment.NewLine;
            signText += Environment.NewLine;
            signText += new string('_', 60);
            signText += Environment.NewLine;
            signText += $"Hamburg, den {date}, Unterschrift {varUser}";

            protocol.AddTextParagraph(signText);

            return(protocol);
        }