< Summary

Information
Class: AspNetCoreGeneratedDocument.Views_ProductionReport_DailyReport
Assembly: ReportingServices.UI
File(s): C:\Users\wathen\source\repos\ReportingServices\ReportingServices.UI\Views\ProductionReport\DailyReport.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 204
Coverable lines: 204
Total lines: 423
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 100
Branch coverage: 0%
Method coverage

Method coverage is only available for sponsors.

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
ExecuteAsync()0%1000%

File(s)

C:\Users\wathen\source\repos\ReportingServices\ReportingServices.UI\Views\ProductionReport\DailyReport.cshtml

#LineLine coverage
 1@model DailyReport
 2@{
 03    int ASMAvailablePct = 0;
 04    int EPPAvailablePct = 0;
 05    int HTRAvailablePct = 0;
 6
 07    int ASMSLL = 0;
 08    int HTRSLL = 0;
 9
 010    int ASMUnloadTemps = 0;
 011    int HTRUnloadTemps = 0;
 12
 013    int reportIndex = (int)DateTime.Now.DayOfWeek;
 14
 015    int numberOfDaysInWeek = Model.CurrentWeek.OutsByDay.Count;
 16
 017    ManualReportEntries rpt = Model.ManualReportEntries;
 18
 19    string myClass;
 020    List<string> toolsDownGreaterThan12Hours = new();
 21
 022    foreach (KeyValuePair<string, ToolStateByType> state in Model.ToolStateByType)
 023    {
 024        if (state.Key != "Metrology" && state.Key != "Cleans")
 025            toolsDownGreaterThan12Hours.AddRange(state.Value.ToolsDownGreaterThan12Hours);
 026    }
 27
 028    toolsDownGreaterThan12Hours.Sort();
 29}
 30
 31@{
 032    ViewData["Title"] = "Daily Passdown | Mesa Reporting Services";
 33}
 34
 35<div aria-label="breadcrumb">
 36    <ol class="breadcrumb">
 37        <li class="breadcrumb-item"><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
 38        <li class="breadcrumb-item"><a asp-area="" asp-controller="ProductionReport" asp-action="Index">Production Repor
 39        <li class="breadcrumb-item active" aria-current="page">Production Passdown Report</li>
 40    </ol>
 41</div>
 42<br />
 43
 44<div class="text-center">
 45    <h2>Daily Report</h2>
 46    <br /><br />
 47</div>
 48
 49<button class="btn btn-outline-dark float-start dailyReportTable" onclick="toggleWeek()">View Previous Week</button>
 50<button class="btn btn-outline-dark float-end dailyReportTable hidden" onclick="toggleWeek()">View Current Week</button>
 51<br /><br />
 52
 53<div class="table-responsive dailyReportTable">
 054    <partial name="_DailyReportPartial" model="@Model.CurrentWeek"/>
 55</div>
 56
 57<div class="table-responsive dailyReportTable hidden">
 058    <partial name="_DailyReportPartial" model="@Model.PreviousWeek" />
 59</div>
 60
 61<br />
 62<h5>Daily Target Summary</h5>
 63<ul>
 064    <li>Operator HC: (Days/Nights) @rpt.OperatorHeadcountDays/@rpt.OperatorHeadcountNights</li>
 065    <li>Total Call Outs: (Days/Nights) @rpt.OperatorCallOutsDays/@rpt.OperatorCallOutsNights</li>
 066    <li>Engineering HC: @rpt.EngineeringHeadcountDays/@rpt.EngineeringHeadcountNights</li>
 067    <li>Total Call Outs: (Days/Nights) @rpt.EngineeringCallOutsDays/@rpt.EngineeringCallOutsNights</li>
 068    <li>Maintenance HC: @rpt.MaintenanceHeadcountDays/@rpt.MaintenanceHeadcountNights</li>
 069    <li>Total Call Outs: (Days/Nights) @rpt.MaintenanceCallOutsDays/@rpt.MaintenanceCallOutsNights</li>
 70</ul>
 71<br />
 72<ul>
 073    <li>Bottle Change (@rpt.BottleChanges.Split(',').Length): @string.Join(", ", rpt.BottleChanges.Split(','))</li>
 074    <li>Daily Part Changes (@rpt.DailyPartChanges.Split(',').Length): @string.Join(", ", rpt.DailyPartChanges.Split(',')
 075    <li>Weekly Part Changes (@rpt.WeeklyPartChanges.Split(',').Length): @string.Join(", ", rpt.WeeklyPartChanges.Split('
 76</ul>
 77<br />
 78<a class="btn btn-light" asp-controller="ProductionReport" asp-action="EditDailyReport">Edit</a>
 79<br /><br />
 080<h5>Current Reactors Down(@(Model.ToolStateByType["ASM"].DownTools + Model.ToolStateByType["EPP"].DownTools + Model.Tool
 81<div class="row">
 82    <div class="col-lg-4">
 083        ASM(@Model.ToolStateByType["ASM"].DownTools)
 84        <table class="table table-sm">
 85            <thead>
 86                <tr>
 87                    <th scope="col">Reactor</th>
 88                    <th scope="col">Owner</th>
 89                    <th scope="col">Issue</th>
 90                </tr>
 91            </thead>
 92            <tbody>
 093                @foreach (ToolStateCurrent tool in Model.ToolStateByType["ASM"].ToolStateCurrents)
 094                {
 095                    if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service")
 096                    {
 097                        string owner = "";
 98
 099                        if (Model.ToolStatesByOwner["Maintenance"].Contains(tool.ReactorStatus))
 0100                            owner = "Maint";
 0101                        else if (Model.ToolStatesByOwner["Engineering"].Contains(tool.ReactorStatus))
 0102                            owner = "Eng";
 103                        else
 0104                            owner = "Prod";
 105
 106                        <tr>
 0107                            <td>@tool.Tool</td>
 0108                            <td>@owner</td>
 0109                            <td>@tool.Comment</td>
 110                        </tr>
 0111                    }
 0112                }
 113            </tbody>
 114        </table>
 115    </div>
 116</div>
 117<div class="row">
 118    <div class="col-lg-4">
 0119        EPP(@Model.ToolStateByType["EPP"].DownTools)
 120        <table class="table table-sm">
 121            <thead>
 122                <tr>
 123                    <th scope="col">Reactor</th>
 124                    <th scope="col">Owner</th>
 125                    <th scope="col">Issue</th>
 126                </tr>
 127            </thead>
 128            <tbody>
 0129                @foreach (ToolStateCurrent tool in Model.ToolStateByType["EPP"].ToolStateCurrents)
 0130                {
 0131                    if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service")
 0132                    {
 0133                        string owner = "";
 134
 0135                        if (Model.ToolStatesByOwner["Maintenance"].Contains(tool.ReactorStatus))
 0136                            owner = "Maint";
 0137                        else if (Model.ToolStatesByOwner["Engineering"].Contains(tool.ReactorStatus))
 0138                            owner = "Eng";
 139                        else
 0140                            owner = "Prod";
 141
 142                        <tr>
 0143                            <td>@tool.Tool</td>
 0144                            <td>@owner</td>
 0145                            <td>@tool.Comment</td>
 146                        </tr>
 0147                    }
 0148                }
 149            </tbody>
 150        </table>
 151    </div>
 152</div>
 153<div class="row">
 154    <div class="col-lg-4">
 0155        HTR(@Model.ToolStateByType["HTR"].DownTools)
 156        <table class="table table-sm">
 157            <thead>
 158                <tr>
 159                    <th scope="col">Reactor</th>
 160                    <th scope="col">Owner</th>
 161                    <th scope="col">Issue</th>
 162                </tr>
 163            </thead>
 164            <tbody>
 0165                @foreach (ToolStateCurrent tool in Model.ToolStateByType["HTR"].ToolStateCurrents)
 0166                {
 0167                    if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service")
 0168                    {
 0169                        string owner = "";
 170
 0171                        if (Model.ToolStatesByOwner["Maintenance"].Contains(tool.ReactorStatus))
 0172                            owner = "Maint";
 0173                        else if (Model.ToolStatesByOwner["Engineering"].Contains(tool.ReactorStatus))
 0174                            owner = "Eng";
 175                        else
 0176                            owner = "Prod";
 177
 178                        <tr>
 0179                            <td>@tool.Tool</td>
 0180                            <td>@owner</td>
 0181                            <td>@tool.Comment</td>
 182                        </tr>
 0183                    }
 0184                }
 185            </tbody>
 186        </table>
 187    </div>
 188</div>
 189<ul>
 190    <li>Application ENG (0):</li>
 0191    <li>Reactors (Capacity @(Model.NumberOfToolsWaferSize6IN + Model.NumberOfToolsWaferSize8IN))
 192        <ul>
 0193            <li>150mm - @Model.NumberOfToolsWaferSize6IN</li>
 0194            <li>200mm - @Model.NumberOfToolsWaferSize8IN</li>
 195        </ul>
 196    </li>
 0197    <li>Scheduled Reactors (@(Model.NumberOfToolsWaferSize6INScheduled + Model.NumberOfToolsWaferSize8INScheduled)):
 198        <ul>
 0199            <li>150mm - @Model.NumberOfToolsWaferSize6INScheduled</li>
 0200            <li>200mm - @Model.NumberOfToolsWaferSize8INScheduled</li>
 201        </ul>
 202    </li>
 203    <li>Dual Layer Reactors
 204        <ul>
 0205            <li>ASM - @(string.Join(',', Model.DualLayerReactors["ASM"]))</li>
 0206            <li>HTR - @(string.Join(',', Model.DualLayerReactors["HTR"]))</li>
 0207            <li>EpiPro - @(string.Join(',', Model.DualLayerReactors["EPP"]))</li>
 208        </ul>
 209    </li>
 210    <li>Engineering Focus Tools (Down > 12 hours)
 211        <ul>
 0212            <li>@string.Join(",", toolsDownGreaterThan12Hours)</li>
 213        </ul>
 214    </li>
 0215    <li>Metrology Down (@Model.ToolStateByType["Metrology"].DownTools):
 0216        @if (Model.ToolStateByType["Metrology"].DownTools > 0)
 0217        {
 218            <ul>
 0219                @foreach (ToolStateCurrent tool in Model.ToolStateByType["Metrology"].ToolStateCurrents)
 0220                {
 0221                    if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service")
 0222                    {
 0223                        <li>@tool.Tool</li>
 0224                    }
 0225                }
 226            </ul>
 0227        }
 228    </li>
 229    <li>
 0230        Cleans (@Model.ToolStateByType["Cleans"].DownTools):
 0231        @if (Model.ToolStateByType["Cleans"].DownTools > 0)
 0232        {
 233            <ul>
 0234                @foreach (ToolStateCurrent tool in Model.ToolStateByType["Cleans"].ToolStateCurrents)
 0235                {
 0236                    if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service")
 0237                    {
 0238                        <li>@tool.Tool</li>
 0239                    }
 0240                }
 241            </ul>
 0242        }
 243    </li>
 244</ul>
 245<br /><br />
 246<div class="table-responsive">
 247    <table class="table">
 248        <thead>
 249            <tr>
 250                <th scope="col"></th>
 251                <th scope="col">Monday</th>
 252                <th scope="col">Tuesday</th>
 253                <th scope="col">Wednesday</th>
 254                <th scope="col">Thursday</th>
 255                <th scope="col">Friday</th>
 256                <th scope="col">Saturday</th>
 257                <th scope="col">Sunday</th>
 258                <th scope="col">WTD</th>
 259                <th scope="col">Daily / Weekly</th>
 260            </tr>
 261            <tr>
 262                <th scope="col"></th>
 0263                @for (int i = 0; i < 7; i++)
 0264                {
 0265                    <th scope="col">@Model.StartDate.AddDays(i).ToString("MM/dd/yyyy")</th>
 0266                }
 267                <th scope="col">Actual</th>
 268                <th scope="col">Target</th>
 269            </tr>
 270        </thead>
 271        <tbody>
 272            <tr>
 273                <td scope="row">ASMs Uptime</td>
 0274                @for (int i = 0; i < 7; i++)
 0275                {
 0276                    if (i < Model.ToolAvailibilityByType["ASM"].Count)
 0277                    {
 0278                        int availiblePct = (int)Math.Round(float.Parse(Model.ToolAvailibilityByType["ASM"][i].AvailableP
 279
 0280                        if (availiblePct < 82)
 0281                            myClass = "table-danger text-danger";
 282                        else
 0283                            myClass = "";
 284
 0285                        <td class="@myClass">@(availiblePct + "%")</td>
 286
 0287                        ASMAvailablePct += availiblePct;
 0288                    }
 289                    else
 0290                    {
 291                        <td></td>
 0292                    }
 0293                }
 0294                <td>@(ASMAvailablePct / numberOfDaysInWeek + "%")</td>
 295                <td>82%</td>
 296            </tr>
 297            <tr>
 298                <td scope="row">EPPs Uptime</td>
 0299                @for (int i = 0; i < 7; i++)
 0300                {
 0301                    if (i < Model.ToolAvailibilityByType["EPP"].Count)
 0302                    {
 0303                        int availiblePct = (int)Math.Round(float.Parse(Model.ToolAvailibilityByType["EPP"][i].AvailableP
 304
 0305                        if (availiblePct < 60)
 0306                            myClass = "table-danger text-danger";
 307                        else
 0308                            myClass = "";
 309
 0310                        <td class="@myClass">@(availiblePct + "%")</td>
 311
 0312                        EPPAvailablePct += availiblePct;
 0313                    }
 314                    else
 0315                    {
 316                        <td></td>
 0317                    }
 0318                }
 0319                <td>@(EPPAvailablePct / numberOfDaysInWeek + "%")</td>
 320                <td>60%</td>
 321            </tr>
 322            <tr>
 323                <td scope="row">HTRs Uptime</td>
 0324                @for (int i = 0; i < 7; i++)
 0325                {
 0326                    if (i < Model.ToolAvailibilityByType["HTR"].Count)
 0327                    {
 0328                        int availiblePct = (int)Math.Round(float.Parse(Model.ToolAvailibilityByType["HTR"][i].AvailableP
 329
 0330                        if (availiblePct < 78)
 0331                            myClass = "table-danger text-danger";
 332                        else
 0333                            myClass = "";
 334
 0335                        <td class="@myClass">@(availiblePct + "%")</td>
 336
 0337                HTRAvailablePct += availiblePct;
 0338                    }
 339                    else
 0340                    {
 341                        <td></td>
 0342                    }
 0343                }
 0344                <td>@(HTRAvailablePct / numberOfDaysInWeek + "%")</td>
 345                <td>78%</td>
 346            </tr>
 347            <tr>
 348                <td scope="row">ASMs SLL Tool Count</td>
 0349                @for (int i = 0; i < 7; i++)
 0350                {
 0351                    if (i < Model.SLLTools.Count())
 0352                    {
 0353                        <td>@Model.SLLTools[i].ASM</td>
 354
 0355                        ASMSLL += @Model.SLLTools[i].ASM;
 0356                    }
 357                    else
 0358                    {
 359                        <td></td>
 0360                    }
 0361                }
 0362                <td>@(ASMSLL / numberOfDaysInWeek)</td>
 363                <td>0</td>
 364            </tr>
 365            <tr>
 366                <td scope="row">HTRs SLL Tool Count</td>
 0367                @for (int i = 0; i < 7; i++)
 0368                {
 0369                    int index = i == 6 ? 0 : i + 1;
 370
 0371                    if (i < Model.SLLTools.Count())
 0372                    {
 0373                        <td>@Model.SLLTools[i].HTR</td>
 374
 0375                        HTRSLL += @Model.SLLTools[i].HTR;
 0376                    }
 377                    else
 0378                    {
 379                        <td></td>
 0380                    }
 0381                }
 0382                <td>@(HTRSLL / numberOfDaysInWeek)</td>
 383                <td>0</td>
 384            </tr>
 385            <tr>
 386                <td scope="row">ASMs &lt;700C (Unload Temps)</td>
 0387                @for (int i = 0; i < 7; i++)
 0388                {
 0389                    if (i < Model.UnloadTempsByDay.Count())
 0390                    {
 0391                        <td>@Model.UnloadTempsByDay[i].ASMUnloadsBelow700</td>
 392
 0393                        ASMUnloadTemps += @Model.UnloadTempsByDay[i].ASMUnloadsBelow700;
 0394                    }
 395                    else
 0396                    {
 397                        <td></td>
 0398                    }
 0399                }
 0400                <td>@(ASMUnloadTemps / numberOfDaysInWeek)</td>
 401                <td>0</td>
 402            </tr>
 403            <tr>
 404                <td scope="row">HTRs &lt;700C (Unload Temps)</td>
 0405                @for (int i = 0; i < 7; i++)
 0406                {
 0407                    if (i < Model.UnloadTempsByDay.Count())
 0408                    {
 0409                        <td>@Model.UnloadTempsByDay[i].HTRUnloadsBelow700</td>
 410
 0411                        HTRUnloadTemps += @Model.UnloadTempsByDay[i].HTRUnloadsBelow700;
 0412                    }
 413                    else
 0414                    {
 415                        <td></td>
 0416                    }
 0417                }
 0418                <td>@(HTRUnloadTemps / numberOfDaysInWeek)</td>
 419                <td>0</td>
 420            </tr>
 421        </tbody>
 422    </table>
 423</div>

Methods/Properties

ExecuteAsync()