Ejemplo n.º 1
0
        private string ForTableHeader(PrintOptions printOptions = null)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string str = string.Empty;

            str += "<thead><tr>\n";
            if (string.IsNullOrWhiteSpace(printOptions.AirlineName))
            {
                str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats0")}</th>\n";
            }
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats1")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats22")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats2")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats3")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats4")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats5")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats6")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats7")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats8")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats9")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats10")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats11")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats12")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats13")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats14")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats15")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats16")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats17")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats18")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats19")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats20")}</th>\n";
            str += $"<th>{i18n.Get("TBFlash.AirportStats.AirlineDailyStats.stats21")}</th>\n";
            str += "</tr></thead>\n";
            return(str);
        }
Ejemplo n.º 2
0
 static internal void UpdateAirlineData()
 {
     AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
     LoadAirlineData(LastDay == 1 ? 1 : LastDay - 1, GameTimer.Day);
     LoadAirportLifetimeStats();
     LastDay = GameTimer.Day;
 }
Ejemplo n.º 3
0
        static internal string GetAirlineData(Airline airline = null)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool($"airlinename: {airline?.name ?? "null"}").WithCodepoint());
            string day = i18n.Get("TBFlash.AirportStats.utils.day");

            StatLoader.UpdateAirlineData();
            string str = airline == null?AirportStatUtils.PageHead(AirportStatUtils.PageTitles.AirportStats, true) : AirportStatUtils.PageHead(airline, -1);

            str += "<table>\n<tr>\n<th></th>";
            str += airline == null ? "<th>" + i18n.Get("TBFlash.AirportStats.utils.lifetime") + "</th>" : string.Empty;
            for (int i = GameTimer.Day; i >= StatLoader.FirstDay; i--)
            {
                str += airline == null ? $"<th><a href=\"Daily Stats?Day={i}\">{day} {i}</a></th>" : $"<th><a href=\"/{airline.name}?Day={i}\">{day} {i}</a></th>";
            }
            str += "</tr>\n";
            str += (airline == null
                ? StatLoader.airportData.ForTable(new PrintOptions {
                FirstDay = StatLoader.FirstDay, LastDay = GameTimer.Day, IncludeLifetime = true
            })
                : StatLoader.airlineData.ForTable(new PrintOptions {
                FirstDay = StatLoader.FirstDay, LastDay = GameTimer.Day, AirlineName = airline.name, IncludeLifetime = false
            }));
            str += "</table>" + AirportStatUtils.PageFooter();
            return(str);
        }
        internal string GetChartData(string dataSet, string airline)
        {
            string jsonCode;

            if (LoadArray(dataSet, airline))
            {
                AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
                SetOptions();
                jsonCode  = $"{{\n\t{ChartOptions()},\n\t{SeriesConfig()},\n\t";
                jsonCode += "\"chartData\":[{";
                for (int j = additionalColumns; j < (GameTimer.Day < 30 ? GameTimer.Day : 30) + additionalColumns; j++)
                {
                    jsonCode += j > additionalColumns ? "," : string.Empty;
                    jsonCode += $"\"{dataArray[0, j]}\":{{";
                    bool hasEntry = false;
                    for (int i = 1; i <= NumSeries; i++)
                    {
                        if (dataArray[i, 5] == "visible")
                        {
                            jsonCode += hasEntry ? "," : string.Empty;
                            jsonCode += $"\"{dataArray[i, 1]}\":{dataArray[i, j]}";
                            hasEntry  = true;
                        }
                    }
                    jsonCode += "}";
                }
                jsonCode += "}]}";
                AirportStatUtils.AirportStatsLogger(Log.FromPool(jsonCode).WithCodepoint());
            }
            else
            {
                jsonCode = i18n.Get("TBFlash.AirportStats.json.jsonConfigError");
            }
            return(jsonCode);
        }
Ejemplo n.º 5
0
        internal string GetDailyStats(Airline airline, int day)
        {
            string htmlCode = AirportStatUtils.PageHead(airline, day);

            htmlCode     += "<table>";
            string[,] arr = LoadArray(airline, day);
            for (int i = 0; i < (arr.Length / arrayCols); i++)
            {
                htmlCode += "<tr>";

                for (int j = airline == null ? 0 : 1; j < arrayCols; j++)
                {
                    htmlCode += i == 0 ? $"<th>{arr[i, j]}</th>"
                        : j == 0
                            ? $"<td><a href=\"/{arr[i, j]}?Day={day}\">{arr[i, j]}</a></td>"
                            : j == 1
                                ? $"<td><a class=\"ajax-dialog\" href=\"/aircraftstats?aircraft={arr[i, j]}\" rel=\"#dialog\">{arr[i, j]}</a></td>"
                                : $"<td>{arr[i, j]}</td>";
                }
                htmlCode += "</tr>";
            }
            htmlCode += "</table>";
            htmlCode += AirportStatUtils.PageFooter();
            return(htmlCode);
        }
Ejemplo n.º 6
0
        internal void LoadAircraft(AircraftConfig ac)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            aircraftName.AddStat(new StringStat(ac.DisplayName));
            nFlights.AddStat(new IntStat(Game.current.flightScheduler.Today.Count(x => ac.DisplayName.Equals(x.flightSchema.aircraftConfig.DisplayName))));
            isMod.AddStat(new BoolStat(ac.isDefault));
            paxCapacity.AddStat(new IntStat(ac.Capacity));
            nFlightAttendants.AddStat(new IntStat(ac.nFlightAttendants));
            nPilots.AddStat(new IntStat(ac.nPilots));
            crewChangeModifier.AddStat(new PercentageStat(ac.CrewChangeChanceModifier));
            fuelCapacity.AddStat(new IntStat(ac.FuelCapacity / 1000));
            minRunwaySize.AddStat(new IntStat(ac.MinRunwaySize));
            minGateSize.AddStat(new StringStat(ac.MinGateSize.ToString()));
            string airlineString = string.Empty;

            foreach (Airline airline in Game.current.airlines)
            {
                if (airline.AircraftInFleet.Contains(ac.isDefault ? ac.DisplayName : ac.ReferenceID))
                {
                    airlineString += airline.name + "<br/>";
                }
            }
            airlinesUsing.AddStat(new StringStat(airlineString));
            shortName.AddStat(new StringStat(ac.DisplayShortName));
        }
Ejemplo n.º 7
0
        private void LoadDictionary(int day)
        {
            if (!minValues.ContainsKey(day))
            {
                float minValue = 100;
                float maxValue = 0;
                int   minKey   = 0;
                int   maxKey   = 0;
                float value;
                int   startTime = GameTimer.MidnightForDay(day);
                AirportStatUtils.AirportStatsLogger(Log.FromPool($"Day: {day}; start{startTime}; end{startTime + 1440}").WithCodepoint());

                for (int i = startTime; i < (startTime + 1440); i++)
                {
                    value = fuelController.GetMarketPriceAtTime(i);
                    if (value < minValue)
                    {
                        minValue = value;
                        minKey   = i;
                    }
                    if (value > maxValue)
                    {
                        maxValue = value;
                        maxKey   = i;
                    }
                }
                minValues[day] = new KeyValuePair <int, float>(minKey, minValue);
                maxValues[day] = new KeyValuePair <int, float>(maxKey, maxValue);
            }
        }
Ejemplo n.º 8
0
 static internal void Init()
 {
     AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
     FirstDay       = GameTimer.Day > 30 ? GameTimer.Day - 29 : 1;
     LastDay        = FirstDay + 1;
     LastFlightLoad = FirstDay + 1;
 }
Ejemplo n.º 9
0
        private string ForTableFlightRecords(PrintOptions printOptions = null)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string str = string.Empty;

            IOrderedEnumerable <FlightRecord> flightRecords = string.IsNullOrWhiteSpace(printOptions.AirlineName)
               ? flights[printOptions.Day].OrderBy(x => x.arrivalTime).ThenBy(x => x.airline)
               : flights[printOptions.Day].Where(x => x.airline == printOptions.AirlineName).OrderBy(x => x.arrivalTime).ThenBy(x => x.airline);

            if (!flightRecords.Any())
            {
                return(str);
            }
            str += "<tbody>";
            bool oddRow = false;

            foreach (FlightRecord fr in flightRecords)
            {
                str += $"<tr{(oddRow ? " class=\"oddRow\"" : string.Empty)}>\n";
                if (string.IsNullOrWhiteSpace(printOptions.AirlineName))
                {
                    str += $"<td><a href=\"/{fr.airline}?Day={printOptions.Day}\">{fr.airline}</a></td>\n";
                }
                str += $"<td class=\"None\"><a class=\"ajax-dialog\" href=\"/aircraftstats?aircraft={fr.aircraft}\" rel=\"#dialog\">{fr.aircraft}</a></td>\n";
                str += $"<td class=\"None\">{fr.originalGate}</td>\n";
                str += $"<td class=\"None\">{DateTime.MinValue.AddSeconds(fr.arrivalTime * 60):t}</td>\n";
                str += $"<td class=\"{(fr.actual_arrivalTime <= 0 ? AirportStatUtils.InfoLevels.None : fr.actual_arrivalTime > fr.arrivalTime ? AirportStatUtils.InfoLevels.Info : AirportStatUtils.InfoLevels.None)}\">{(fr.actual_arrivalTime > 0 ? DateTime.MinValue.AddSeconds(fr.actual_arrivalTime * 60).ToString("t") : string.Empty)}</td>\n";
                str += $"<td class=\"None\">{DateTime.MinValue.AddSeconds(fr.departureTime * 60):t}</td>\n";
                str += $"<td class=\"{(fr.actual_departureTime <= 0 ? AirportStatUtils.InfoLevels.None : fr.actual_departureTime - fr.departureTime > 15 ? AirportStatUtils.InfoLevels.Warning : fr.actual_departureTime - fr.departureTime > 0 ? AirportStatUtils.InfoLevels.Info : AirportStatUtils.InfoLevels.None)}\">{(fr.actual_departureTime > 0 ? DateTime.MinValue.AddSeconds(fr.actual_departureTime * 60).ToString("t") : string.Empty)}</td>\n";
                str += $"<td class=\"None\">{fr.nArriving:#}</td>\n";
                str += $"<td class=\"None\">{(fr.actual_arrivalTime > 0 ? new TimeSpan(0, 0, (int)fr.time_deplaning * 60).ToString("g") : string.Empty)}</td>\n";
                str += $"<td class=\"None\">{fr.nDeparting:#}</td>\n";
                str += $"<td class=\"None\">{fr.nCheckedIn:#}</td>\n";
                str += $"<td class=\"{(fr.actual_departureTime <=0 ? AirportStatUtils.InfoLevels.None : fr.nBoarded < fr.nDeparting ? AirportStatUtils.InfoLevels.Warning : AirportStatUtils.InfoLevels.None)}\">{fr.nBoarded:#}</td>\n";
                str += $"<td class=\"None\">{(fr.nBoarded > 0 ? new TimeSpan(0, 0, (int)fr.time_boarding * 60).ToString("g") : string.Empty)}</td>\n";
                str += $"<td class=\"None\">{fr.nArrivalBags:#}</td>\n";
                str += $"<td class=\"None\">{fr.nBagsUnloaded:#}</td>\n";
                str += $"<td class=\"None\">{(fr.nBagsUnloaded > 0 ? DateTime.MinValue.AddSeconds(fr.time_bag_unload * 60).ToString("t") : string.Empty)}</td>\n";
                str += $"<td class=\"None\">{fr.nDepartingBags:#}</td>\n";
                str += $"<td class=\"{(fr.actual_departureTime <= 0 ? AirportStatUtils.InfoLevels.None : fr.nBagsLoaded < fr.nDepartingBags ? AirportStatUtils.InfoLevels.Info : AirportStatUtils.InfoLevels.None)}\">{fr.nBagsLoaded:#}</td>\n";
                str += $"<td class=\"None\">{(fr.nBagsLoaded > 0 ? new TimeSpan(0, 0, (int)fr.time_bag_load * 60).ToString("g") : string.Empty)}</td>\n";
                str += $"<td class=\"None\">{fr.nFuelRequested / 1000:#,#}</td>\n";
                str += $"<td class=\"{(fr.actual_departureTime <=0 ? AirportStatUtils.InfoLevels.None : fr.nFuelRefueled < fr.nFuelRequested ? AirportStatUtils.InfoLevels.Info : AirportStatUtils.InfoLevels.None)}\">{fr.nFuelRefueled / 1000:#,#}</td>\n";
                string st = string.Empty;
                foreach (Flight.Status stat in Enum.GetValues(typeof(Flight.Status)))
                {
                    if (AirportStatUtils.HasStatus(fr.status, stat))
                    {
                        st += i18n.Get("TBFlash.AirportStats.flightstatus." + Enum.GetName(typeof(Flight.Status), stat)) + "<br/>";
                    }
                }
                str   += $"<td class=\"None\">{st}</td>\n";
                str   += $"<td class=\"{(fr.reason.ToString().Length > 5 ? AirportStatUtils.InfoLevels.Warning : AirportStatUtils.InfoLevels.None)}\">{i18n.Get("UI.strings.flightstatusreason.") + fr.reason.ToString()}</td>\n";
                str   += "</tr>\n";
                oddRow = !oddRow;
            }
            str += "</tbody>";
            return(str);
        }
Ejemplo n.º 10
0
 public void Stop()
 {
     Listener?.Close();
     Listener?.Stop();
     Listener  = null;
     isStarted = false;
     AirportStatUtils.AirportStatsLogger(Log.FromPool("Listener Stopped").WithCodepoint());
 }
Ejemplo n.º 11
0
 internal void ResetAirlineStats()
 {
     AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
     //if (airlineStats.airlineName.stats.Count > 0)
     //{
     airlineStats = new AirlineStatGroup();
     //}
 }
        private bool LoadFuelStats()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            Title       = i18n.Get("TBFlash.AirportStats.json.fuelStats");
            Type        = Types.multiAxisLine;
            NumSeries   = 5;
            YAxisLabel  = i18n.Get("TBFlash.AirportStats.json.litersOfFuel");
            YAxisLabel2 = i18n.Get("TBFlash.AirportStats.json.planesServed");
            dataArray   = new string[NumSeries + 1, (GameTimer.Day <= 30 ? GameTimer.Day : 30) + additionalColumns];
            int j = additionalColumns - 1;

            for (int i = GameTimer.Day; i >= (GameTimer.Day > 30 ? GameTimer.Day - 29 : 1); i--)
            {
                j++;
                if (!Game.current.GameReports.TryGetValue(i, out GamedayReportingData GRD))
                {
                    break;
                }
                IEnumerable <FlightRecord> FlightRecords = Game.current.flightRecords.GetForDay(i - 1);

                dataArray[0, j] = i.ToString();
                dataArray[1, j] = (FlightRecords.Sum(x => x.nFuelRequested) / 1000).ToString("F0");
                dataArray[2, j] = (FlightRecords.Sum(x => x.nFuelRefueled) / 1000).ToString("F0");
                dataArray[3, j] = FlightRecords.Count(x => x.nFuelRefueled > 0).ToString("F0");
                dataArray[4, j] = GRD.FuelFailures.ToString("F0");
                dataArray[5, j] = CalculateAverageFuelCost(i).ToString("F2");
            }
            dataArray[1, 0] = i18n.Get("TBFlash.AirportStats.json.fuelRequested");
            dataArray[2, 0] = i18n.Get("TBFlash.AirportStats.json.fuelProvided");
            dataArray[3, 0] = i18n.Get("TBFlash.AirportStats.json.servedFuel");
            dataArray[4, 0] = i18n.Get("TBFlash.AirportStats.json.fuelingFailures");
            dataArray[5, 0] = i18n.Get("TBFlash.AirportStats.json.fuelPrice");
            dataArray[1, 1] = "fuelReq";
            dataArray[2, 1] = "fuelProv";
            dataArray[3, 1] = "served";
            dataArray[4, 1] = "failed";
            dataArray[5, 1] = "price";
            dataArray[1, 2] = "ivory";
            dataArray[2, 2] = "green";
            dataArray[3, 2] = "cyan";
            dataArray[4, 2] = "red";
            dataArray[5, 2] = "purple";
            dataArray[1, 3] = "2";
            dataArray[2, 3] = "1";
            dataArray[3, 3] = "4";
            dataArray[4, 3] = "5";
            dataArray[5, 3] = "3";
            dataArray[1, 6] = nameof(YAxisTypes.yAxisLeft);
            dataArray[2, 6] = nameof(YAxisTypes.yAxisLeft);
            dataArray[3, 6] = nameof(YAxisTypes.yAxisRight);
            dataArray[4, 6] = nameof(YAxisTypes.yAxisRight);
            dataArray[5, 6] = nameof(YAxisTypes.yAxisRight2);
            for (int i = 1; i <= NumSeries; i++)
            {
                dataArray[i, 5] = "visible";
            }
            return(true);
        }
Ejemplo n.º 13
0
        internal override SeriesData GetSeriesData()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string labels = $"\"{bagsUnloaded.SeriesData.Label}\",\"{bagsLoaded.SeriesData.Label}\",\"{lostBags.SeriesData.Label}\"";
            string keys   = $"\"{bagsUnloaded.SeriesData.Key}\",\"{bagsLoaded.SeriesData.Key}\",\"{lostBags.SeriesData.Key}\"";
            string colors = $"\"{bagsUnloaded.SeriesData.Color}\",\"{bagsLoaded.SeriesData.Color}\",\"{lostBags.SeriesData.Color}\"";
            string orders = $"\"{bagsUnloaded.SeriesData.Order}\",\"{bagsLoaded.SeriesData.Order}\",\"{lostBags.SeriesData.Order}\"";

            return(new SeriesData(labels, keys, colors, orders));
        }
Ejemplo n.º 14
0
        internal override SeriesData GetSeriesData()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string labels = $"\"{nArriving.SeriesData.Label}\",\"{nConnecting.SeriesData.Label}\",\"{nBoarded.SeriesData.Label}\",\"{nMissed.SeriesData.Label}\"";
            string keys   = $"\"{nArriving.SeriesData.Key}\",\"{nConnecting.SeriesData.Key}\",\"{nBoarded.SeriesData.Key}\",\"{nMissed.SeriesData.Key}\"";
            string colors = $"\"{nArriving.SeriesData.Color}\",\"{nConnecting.SeriesData.Color}\",\"{nBoarded.SeriesData.Color}\",\"{nMissed.SeriesData.Color}\"";
            string orders = $"\"{nArriving.SeriesData.Order}\",\"{nConnecting.SeriesData.Order}\",\"{nBoarded.SeriesData.Order}\",\"{nMissed.SeriesData.Order}\"";

            return(new SeriesData(labels, keys, colors, orders));
        }
Ejemplo n.º 15
0
        static internal string GetFuelFutures()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string str = AirportStatUtils.PageHead(AirportStatUtils.PageTitles.FuelFutures, true);

            str += "<table>";
            str += StatLoader.airportData.fuelFutures.ForTable();
            str += "</table>" + AirportStatUtils.PageFooter();
            return(str);
        }
Ejemplo n.º 16
0
        internal override SeriesData GetSeriesData()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string labels = $"\"{fuelRequested.SeriesData.Label}\",\"{fuelDelivered.SeriesData.Label}\",\"{planesRefueled.SeriesData.Label}\",\"{fuelingFailures.SeriesData.Label}\",\"{avgFuelPrice.SeriesData.Label}\"";
            string keys   = $"\"{fuelRequested.SeriesData.Key}\",\"{fuelDelivered.SeriesData.Key}\",\"{planesRefueled.SeriesData.Key}\",\"{fuelingFailures.SeriesData.Key}\",\"{avgFuelPrice.SeriesData.Key}\"";
            string colors = $"\"{fuelRequested.SeriesData.Color}\",\"{fuelDelivered.SeriesData.Color}\",\"{planesRefueled.SeriesData.Color}\",\"{fuelingFailures.SeriesData.Color}\",\"{avgFuelPrice.SeriesData.Color}\"";
            string orders = $"\"{fuelRequested.SeriesData.Order}\",\"{fuelDelivered.SeriesData.Order}\",\"{planesRefueled.SeriesData.Order}\",\"{fuelingFailures.SeriesData.Order}\",\"{avgFuelPrice.SeriesData.Order}\"";
            string yAxis  = $"\"{fuelRequested.SeriesData.YAxis}\",\"{fuelDelivered.SeriesData.YAxis}\",\"{planesRefueled.SeriesData.YAxis}\",\"{fuelingFailures.SeriesData.YAxis}\",\"{avgFuelPrice.SeriesData.YAxis}\"";

            return(new SeriesData(labels, keys, colors, orders, yAxis));
        }
Ejemplo n.º 17
0
        static internal string GetAircraftStats(AircraftConfig aircraftConfig)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string str = string.Empty;

            StatLoader.UpdateAircraftStats(aircraftConfig);
            str += $"<div class=\"modal\"><h1>{aircraftConfig.DisplayName}</h1><table>\n";
            str += StatLoader.aircraftData.ForTable();
            str += "</table></div>";
            return(str);
        }
Ejemplo n.º 18
0
        static internal string GetAirlineStats(bool activeOnly = false)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            StatLoader.UpdateAirlineStats();
            string str = activeOnly ? AirportStatUtils.PageHead(AirportStatUtils.PageTitles.ActiveAirlines, true) : AirportStatUtils.PageHead(AirportStatUtils.PageTitles.AllAirlines, true);

            str += "<table>";
            str += StatLoader.airportData.airlineStats.ForTable(new PrintOptions {
                ActiveOnly = activeOnly
            });
            str += "</table>" + AirportStatUtils.PageFooter();
            return(str);
        }
Ejemplo n.º 19
0
        static private string GetSeriesData(StatGroup statGroup)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            SeriesData seriesData = statGroup.GetSeriesData();
            string     label      = "\"seriesConfig\":[{\"seriesLabels\":[" + seriesData.Label + "]";
            string     key        = ",\"seriesKeys\":[" + seriesData.Key + "]";
            string     color      = ",\"seriesColors\":[" + seriesData.Color + "]";
            string     order      = ",\"seriesOrders\":[" + seriesData.Order + "]";
            string     stack      = seriesData.Stack != null ? ",\"seriesStacks\":[" + seriesData.Stack + "]" : string.Empty;
            string     yAxis      = seriesData.YAxis != null ? ",\"seriesYAxis\":[" + seriesData.YAxis + "]" : string.Empty;

            return(label + key + color + order + stack + yAxis + "}]");
        }
Ejemplo n.º 20
0
        static private StatGroup GetStatGroup(string dataset, string airlineName)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            if (string.IsNullOrEmpty(dataset))
            {
                return(null);
            }
            switch (dataset.ToUpperInvariant())
            {
            case "FLIGHTSTATS":
                if (!string.IsNullOrWhiteSpace(airlineName))
                {
                    return(StatLoader.airlineData.GetAirlineDailyData(airlineName).flightStats);
                }
                return(StatLoader.airportData.flightStats);

            case "FUELFUTURES":
                return(StatLoader.airportData.fuelFutures);

            case "FUELSTATS":
                if (!string.IsNullOrWhiteSpace(airlineName))
                {
                    return(StatLoader.airlineData.GetAirlineDailyData(airlineName).fuelStats);
                }
                return(StatLoader.airportData.fuelStats);

            case "LUGGAGESTATS":
                if (!string.IsNullOrWhiteSpace(airlineName))
                {
                    return(StatLoader.airlineData.GetAirlineDailyData(airlineName).luggageStats);
                }
                return(StatLoader.airportData.luggageStats);

            case "PAXSTATS":
                if (!string.IsNullOrWhiteSpace(airlineName))
                {
                    return(StatLoader.airlineData.GetAirlineDailyData(airlineName).passengerStats);
                }
                return(StatLoader.airportData.passengerStats);

            case "REVEXP":
                return(StatLoader.airportData.revAndExpStats);

            case "PROFITS":
                return(StatLoader.airportData.profitStats);

            default:
                return(null);
            }
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Calculates average cost of fuel using cost each hour from midnight to 11pm.
        /// </summary>
        /// <param name="day">The day #; 0 if alltime</param>
        /// <returns>average cost</returns>
        private double CalculateAverageFuelCost(int day)
        {
            FuelController fuelController = Game.current.fuelController;
            int            endOfDay       = (1440 * (day == 0 ? GameTimer.Day : day)) - 480;
            int            startOfDay     = day == 0 ? 0 : endOfDay - (day == 1 ? 960 : 1440);
            float          totalCost      = 0;

            for (int i = startOfDay; i < endOfDay; i += 60)
            {
                totalCost += fuelController.GetMarketPriceAtTime(i);
                AirportStatUtils.AirportStatsLogger(Log.FromPool($"min: {i}| cost = {fuelController.GetMarketPriceAtTime(i)} | total = {totalCost}"));
            }
            return(totalCost / ((endOfDay - startOfDay) / 60));
        }
Ejemplo n.º 22
0
        static internal string GetFlightData(int day, Airline airline = null)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            StatLoader.UpdateFlights();
            string str = AirportStatUtils.PageHead(airline, day);

            //str += "<table class=\"scrollable\">";
            str += "<table>";
            str += StatLoader.flightData.ForTable(new PrintOptions {
                Day = day, AirlineName = (airline?.name)
            });
            str += "</table>" + AirportStatUtils.PageFooter();
            return(str);
        }
Ejemplo n.º 23
0
        static internal string GetChartData(string dataset, string airlineName)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            StatLoader.UpdateAirlineData();
            StatGroup    statGroup    = GetStatGroup(dataset, airlineName);
            PrintOptions printOptions = new PrintOptions()
            {
                FirstDay = StatLoader.FirstDay, LastDay = StatLoader.LastDay
            };
            string str = $"{{\n\t{statGroup.GetChartData().GetChartOptions()},\n\t{GetSeriesData(statGroup)},\n\t\"chartData\":[{{{statGroup.ForChart(printOptions)}}}]}}";

            AirportStatUtils.AirportStatsLogger(Log.FromPool(str).WithCodepoint());
            return(str);
        }
Ejemplo n.º 24
0
        private string[,] LoadArray(Airline airline, int day)
        {
            IOrderedEnumerable <FlightRecord> flightRecords = airline == null
                ? Game.current.flightRecords.GetForDay(day - 1).OrderBy(x => x.arrivalTime).ThenBy(x => x.airline)
                : Game.current.flightRecords.GetForDay(day - 1).Where(x => x.airline == airline.name).OrderBy(x => x.arrivalTime).ThenBy(x => x.airline);

            int numFlights = flightRecords.Count();

            string[,] arr = new string[numFlights + 1, arrayCols];
            for (int i = 0; i < arrayCols; i++)
            {
                arr[0, i] = i18n.Get($"TBFlash.AirportStats.AirlineDailyStats.stats{i}");
            }
            for (int i = 1; i <= numFlights; i++)
            {
                FlightRecord fr = flightRecords.ElementAt(i - 1);
                arr[i, 0]  = fr.airline;
                arr[i, 1]  = fr.aircraft;
                arr[i, 2]  = AirportStatUtils.FormatTime(fr.arrivalTime * 60, true);
                arr[i, 3]  = fr.actual_arrivalTime > 0 ? AirportStatUtils.FormatTime(fr.actual_arrivalTime * 60, true) : string.Empty;
                arr[i, 4]  = AirportStatUtils.FormatTime(fr.departureTime * 60, true);
                arr[i, 5]  = fr.actual_departureTime > 0 ? AirportStatUtils.FormatTime(fr.actual_departureTime * 60, true) : string.Empty;
                arr[i, 6]  = fr.nArriving.ToString("#");
                arr[i, 7]  = fr.actual_arrivalTime > 0 ? AirportStatUtils.FormatTime(fr.time_deplaning * 60) : string.Empty;
                arr[i, 8]  = fr.nDeparting.ToString("#");
                arr[i, 9]  = fr.nCheckedIn.ToString("#");
                arr[i, 10] = fr.nBoarded.ToString("#");
                arr[i, 11] = fr.nBoarded > 0 ? AirportStatUtils.FormatTime(fr.time_boarding * 60) : string.Empty;
                arr[i, 12] = fr.nArrivalBags.ToString("#");
                arr[i, 13] = fr.nBagsUnloaded.ToString("#");
                arr[i, 14] = fr.nBagsUnloaded > 0 ? AirportStatUtils.FormatTime(fr.time_bag_unload * 60, true) : string.Empty;
                arr[i, 15] = fr.nDepartingBags.ToString("#");
                arr[i, 16] = fr.nBagsLoaded.ToString("#");
                arr[i, 17] = fr.nBagsLoaded > 0 ? AirportStatUtils.FormatTime(fr.time_bag_load * 60) : string.Empty;
                arr[i, 18] = (fr.nFuelRequested / 1000).ToString("#,###");
                arr[i, 19] = (fr.nFuelRefueled / 1000).ToString("#,###");
                string st = string.Empty;
                foreach (Flight.Status stat in Enum.GetValues(typeof(Flight.Status)))
                {
                    if (AirportStatUtils.HasStatus(fr.status, stat))
                    {
                        st += i18n.Get("TBFlash.AirportStats.flightstatus." + Enum.GetName(typeof(Flight.Status), stat)) + "<br/>";
                    }
                }
                arr[i, 20] = st;
                arr[i, 21] = i18n.Get("UI.strings.flightstatusreason.") + fr.reason.ToString();
            }
            return(arr);
        }
Ejemplo n.º 25
0
        internal string ForTable(PrintOptions printOptions = null)
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            IEnumerable <string>        list        = printOptions.ActiveOnly ? FindActiveAirlines(includeInSatisfaction.stats) : includeInSatisfaction.stats.Keys;
            IOrderedEnumerable <string> airlineList = list.OrderBy(x => x);
            string str = string.Empty;

            str += "<thead>";
            str += airlineName.ForTable(airlineList, false, true);
            str += "</thead><tbody>";
            str += includeInSatisfaction.ForTable(airlineList, true);
            str += interest.ForTable(airlineList);
            str += communication.ForTable(airlineList, true);
            str += fuelSatisfaction.ForTable(airlineList);
            str += paxSatisfaction.ForTable(airlineList, true);
            str += fees.ForTable(airlineList);
            str += reliability.ForTable(airlineList, true);
            str += trust.ForTable(airlineList);
            str += facilityQuality.ForTable(airlineList, true);
            str += nAcceptedOffers.ForTable(airlineList);
            str += baseRefuelPercentage.ForTable(airlineList, true);
            str += firstClassPercentage.ForTable(airlineList);
            str += newFlightBonus.ForTable(airlineList, true);
            str += peakFlightCount.ForTable(airlineList);
            str += nReps.ForTable(airlineList, true);
            str += hasDeal.ForTable(airlineList);

            str += runwayFees.ForTable(airlineList, true);
            str += terminalFees.ForTable(airlineList);
            str += dailyFees.ForTable(airlineList, true);
            str += fuelSatisfactionNegotiated.ForTable(airlineList);
            str += reliabilityNegotiated.ForTable(airlineList, true);
            str += offices.ForTable(airlineList);
            str += conferenceRoom.ForTable(airlineList, true);
            str += stores.ForTable(airlineList);
            str += storeShare.ForTable(airlineList, true);
            str += cafes.ForTable(airlineList);
            str += cafeShare.ForTable(airlineList, true);
            str += firstClassLounges.ForTable(airlineList);
            str += flightCrewLounges.ForTable(airlineList, true);
            str += smallGates.ForTable(airlineList);
            str += largeGates.ForTable(airlineList, true);
            str += XLGates.ForTable(airlineList);
            str += paxPercent.ForTable(airlineList, true);
            str += penalty.ForTable(airlineList);
            str += "</tbody>";
            return(str);
        }
Ejemplo n.º 26
0
        internal override SeriesData GetSeriesData()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            //string labels = $"\"{GrossProfit.SeriesData.Label}\",\"{OperatingProfit.SeriesData.Label}\",\"{NetProfit.SeriesData.Label}\",\"{GrossMargin.SeriesData.Label}\",\"{OperatingMargin.SeriesData.Label}\",\"{NetMargin.SeriesData.Label}\"";
            //string keys = $"\"{GrossProfit.SeriesData.Key}\",\"{OperatingProfit.SeriesData.Key}\",\"{NetProfit.SeriesData.Key}\",\"{GrossMargin.SeriesData.Key}\",\"{OperatingMargin.SeriesData.Key}\",\"{NetMargin.SeriesData.Key}\"";
            //string colors = $"\"{GrossProfit.SeriesData.Color}\",\"{OperatingProfit.SeriesData.Color}\",\"{NetProfit.SeriesData.Color}\",\"{GrossMargin.SeriesData.Color}\",\"{OperatingMargin.SeriesData.Color}\",\"{NetMargin.SeriesData.Color}\"";
            //string orders = $"\"{GrossProfit.SeriesData.Order}\",\"{OperatingProfit.SeriesData.Order}\",\"{NetProfit.SeriesData.Order}\",\"{GrossMargin.SeriesData.Order}\",\"{OperatingMargin.SeriesData.Order}\",\"{NetMargin.SeriesData.Order}\"";
            //string yAxis = $"\"{GrossProfit.SeriesData.YAxis}\",\"{OperatingProfit.SeriesData.YAxis}\",\"{NetProfit.SeriesData.YAxis}\",\"{GrossMargin.SeriesData.YAxis}\",\"{OperatingMargin.SeriesData.YAxis}\",\"{NetMargin.SeriesData.YAxis}\"";
            string labels = $"\"{NetProfit.SeriesData.Label}\",\"{NetMargin.SeriesData.Label}\"";
            string keys   = $"\"{NetProfit.SeriesData.Key}\",\"{NetMargin.SeriesData.Key}\"";
            string colors = $"\"{NetProfit.SeriesData.Color}\",\"{NetMargin.SeriesData.Color}\"";
            string orders = $"\"{NetProfit.SeriesData.Order}\",\"{NetMargin.SeriesData.Order}\"";
            string yAxis  = $"\"{NetProfit.SeriesData.YAxis}\",\"{NetMargin.SeriesData.YAxis}\"";

            return(new SeriesData(labels, keys, colors, orders, yAxis));
        }
        private bool LoadFlightStats()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            Title      = i18n.Get("TBFlash.AirportStats.json.flightStats");
            Type       = Types.line;
            NumSeries  = 4;
            YAxisLabel = i18n.Get("TBFlash.AirportStats.json.numberFlights");
            dataArray  = new string[NumSeries + 1, (GameTimer.Day <= 30 ? GameTimer.Day : 30) + additionalColumns];
            int j = additionalColumns - 1;

            for (int i = GameTimer.Day; i >= (GameTimer.Day > 30 ? GameTimer.Day - 29 : 1); i--)
            {
                j++;
                if (!Game.current.GameReports.TryGetValue(i, out GamedayReportingData GRD))
                {
                    break;
                }
                IEnumerable <FlightRecord> FlightRecords = Game.current.flightRecords.GetForDay(i - 1);

                dataArray[0, j] = i.ToString();
                dataArray[1, j] = GRD.FlightsCount.ToString("F0");
                dataArray[2, j] = (FlightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed)) - FlightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture))).ToString("F0");
                dataArray[3, j] = FlightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("F0");
                dataArray[4, j] = GRD.FlightsCanceled.ToString("F0");
            }
            dataArray[1, 0] = i18n.Get("TBFlash.AirportStats.json.scheduledDepartures");
            dataArray[2, 0] = i18n.Get("TBFlash.AirportStats.json.ontimeDepartures");
            dataArray[3, 0] = i18n.Get("TBFlash.AirportStats.json.delayedDepartures");
            dataArray[4, 0] = i18n.Get("TBFlash.AirportStats.json.canceled");
            dataArray[1, 1] = "schedDepart";
            dataArray[2, 1] = "ontimeDepart";
            dataArray[3, 1] = "delayDepart";
            dataArray[4, 1] = "canx";
            dataArray[1, 2] = "white";
            dataArray[2, 2] = "green";
            dataArray[3, 2] = "cyan";
            dataArray[4, 2] = "red";
            dataArray[1, 3] = "4";
            dataArray[2, 3] = "1";
            dataArray[3, 3] = "2";
            dataArray[4, 3] = "3";
            for (int i = 1; i <= NumSeries; i++)
            {
                dataArray[i, 5] = "visible";
            }
            return(true);
        }
        private string[,] LoadArray(Airline airline)
        {
            int numdays = GameTimer.Day <= 30 ? GameTimer.Day : 30;

            AirportStatUtils.AirportStatsLogger(Log.FromPool($"GameTimer:{GameTimer.Day}, numdays:{numdays}").WithCodepoint());
            string[,] arr = new string[arrayRows, numdays + 1];

            for (int i = 0; i < arrayRows; i++)
            {
                arr[i, 0] = i18n.Get($"TBFlash.AirportStats.AirlineCompanyStats.stats{i}");
            }
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());

            int j = 0;

            for (int i = GameTimer.Day; i >= (GameTimer.Day > 30 ? GameTimer.Day - 29 : 1); i--)
            {
                j++;
                IEnumerable <FlightRecord> flightRecords = Game.current.flightRecords.GetForDay(i - 1).Where(x => x.airline == airline.name);
                arr[0, j]  = flightRecords.Any() ? flightRecords.Count().ToString("#,###"):"None";
                arr[1, j]  = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedArrival)).ToString("#,###");
                arr[2, j]  = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.RequiresCrew)).ToString("#,###");
                arr[3, j]  = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) && !AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("#,###");
                arr[4, j]  = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.DelayedDeparture)).ToString("#,###");
                arr[5, j]  = flightRecords.Count(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Canceled)).ToString("#,###");
                arr[6, j]  = flightRecords.Count(x => x.reason == global::Flight.StatusReason.AirportInvalid).ToString("#,###");
                arr[7, j]  = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Weather).ToString("#,###");
                arr[8, j]  = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Runway).ToString("#,###");
                arr[9, j]  = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Gate).ToString("#,###");
                arr[10, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Expired).ToString("#,###");
                arr[11, j] = flightRecords.Count(x => x.reason == global::Flight.StatusReason.Reneged).ToString("#,###");
                arr[12, j] = flightRecords.Sum(x => x.nArriving).ToString("#,###");
                arr[13, j] = flightRecords.Sum(x => x.nDeparting).ToString("#,###");
                arr[14, j] = flightRecords.Sum(x => x.nCheckedIn).ToString("#,###");
                arr[15, j] = flightRecords.Sum(x => x.nBoarded).ToString("#,###");
                arr[16, j] = flightRecords.Sum(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) ? x.nDeparting - x.nBoarded : 0).ToString("#,###");
                arr[17, j] = AirportStatUtils.FormatTime(flightRecords.Sum(x => x.time_deplaning) * 60f);
                arr[18, j] = AirportStatUtils.FormatTime(flightRecords.Sum(x => x.nBoarded > 0 ? x.time_boarding : 0) * 60f);
                arr[19, j] = (flightRecords.Sum(x => x.nFuelRequested) / 1000).ToString("#,###");
                arr[20, j] = (flightRecords.Sum(x => x.nFuelRefueled) / 1000).ToString("#,###");
                arr[21, j] = flightRecords.Sum(x => x.nBagsUnloaded).ToString("#,###");
                arr[22, j] = flightRecords.Sum(x => x.nBagsLoaded).ToString("#,###");
                arr[23, j] = flightRecords.Sum(x => AirportStatUtils.HasStatus(x.status, global::Flight.Status.Departed) ? x.nDepartingBags - x.nBagsLoaded : 0).ToString("#,###");
                arr[24, j] = AirportStatUtils.FormatTime(flightRecords.Sum(x => x.nBagsLoaded > 0 ? x.time_bag_load : 0) * 60f);
            }
            return(arr);
        }
        private bool LoadPaxStats()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            Title      = i18n.Get("TBFlash.AirportStats.json.paxStats");
            Type       = Types.line;
            NumSeries  = 4;
            YAxisLabel = i18n.Get("TBFlash.AirportStats.json.numPax");
            dataArray  = new string[NumSeries + 1, (GameTimer.Day <= 30 ? GameTimer.Day : 30) + additionalColumns];
            int j = additionalColumns - 1;

            for (int i = GameTimer.Day; i >= (GameTimer.Day > 30 ? GameTimer.Day - 29 : 1); i--)
            {
                j++;
                if (!Game.current.GameReports.TryGetValue(i, out GamedayReportingData GRD))
                {
                    break;
                }
                dataArray[0, j] = i.ToString();
                dataArray[1, j] = GRD.NumArrivalPax.ToString("F0");
                dataArray[2, j] = GRD.NumConnectPax.ToString("F0");
                dataArray[3, j] = GRD.BoardedFlight.ToString("F0");
                dataArray[4, j] = GRD.MissedFlight.ToString("F0");
            }
            dataArray[1, 0] = i18n.Get("TBFlash.AirportStats.json.arriving");
            dataArray[2, 0] = i18n.Get("TBFlash.AirportStats.json.connecting");
            dataArray[3, 0] = i18n.Get("TBFlash.AirportStats.json.boarded");
            dataArray[4, 0] = i18n.Get("TBFlash.AirportStats.json.missedFlight");
            dataArray[1, 1] = "arrive";
            dataArray[2, 1] = "connect";
            dataArray[3, 1] = "board";
            dataArray[4, 1] = "missed";
            dataArray[1, 2] = "ivory";
            dataArray[2, 2] = "cyan";
            dataArray[3, 2] = "green";
            dataArray[4, 2] = "red";
            dataArray[1, 3] = "4";
            dataArray[2, 3] = "3";
            dataArray[3, 3] = "1";
            dataArray[4, 3] = "2";
            for (int i = 1; i <= NumSeries; i++)
            {
                dataArray[i, 5] = "visible";
            }
            return(true);
        }
Ejemplo n.º 30
0
        internal string ForTable()
        {
            AirportStatUtils.AirportStatsLogger(Log.FromPool("").WithCodepoint());
            string str = string.Empty;

            str += aircraftName.ForTable();
            str += nFlights.ForTable();
            str += isMod.ForTable();
            str += paxCapacity.ForTable();
            str += nFlightAttendants.ForTable();
            str += nPilots.ForTable();
            str += crewChangeModifier.ForTable();
            str += fuelCapacity.ForTable();
            str += minRunwaySize.ForTable();
            str += minGateSize.ForTable();
            str += airlinesUsing.ForTable();
            str += shortName.ForTable();
            return(str);
        }