Added HttpException class for missing HttpException for net8 Wrapped HttpContext.Session, GetJsonResult, IsAjaxRequest and GetUserIdentityName in controllers for net8 Added AuthenticationService to test Fab2ApprovalMKLink code for net8 Compile conditionally flags to debug in dotnet core
2587 lines
111 KiB
Plaintext
2587 lines
111 KiB
Plaintext
@model Fab2ApprovalSystem.Models.MRB
|
|
|
|
@{
|
|
ViewBag.Title = "Edit";
|
|
}
|
|
|
|
@{
|
|
Layout = "_MRBLayout.cshtml";
|
|
}
|
|
|
|
<link rel="stylesheet" href="/Content/kendo/kendo.blueopal.min.css" />
|
|
<link rel="stylesheet" href="~/Content/kendogridcustom.css" />
|
|
|
|
<style>
|
|
.k-grid .k-grid-header .k-header .k-link {
|
|
height: auto;
|
|
}
|
|
|
|
.k-grid .k-grid-header .k-header {
|
|
white-space: normal;
|
|
}
|
|
|
|
.k-grid .k-edit-cell input {
|
|
width: 100%;
|
|
}
|
|
|
|
@*InLine Edit Mode*@
|
|
.k-grid-edit-row input {
|
|
width: 100%;
|
|
}
|
|
|
|
.progress-bar-black {
|
|
background-color: black;
|
|
}
|
|
|
|
.progress-bar-yellow {
|
|
background-color: yellow;
|
|
}
|
|
|
|
.progress-bar-primary {
|
|
background-color: yellow;
|
|
}
|
|
|
|
.progress-striped .progress-bar-primary {
|
|
background-image: linear-gradient(45deg, rgba(255, 255, 255, .75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .75) 50%, rgba(255, 255, 255, .75) 75%, transparent 75%, transparent);
|
|
}
|
|
|
|
.modal-vertical-centered {
|
|
transform: translate(0, 50%) !important;
|
|
-ms-transform: translate(0, 50%) !important; /* IE 9 */
|
|
-webkit-transform: translate(0, 50%) !important; /* Safari and Chrome */
|
|
}
|
|
|
|
.k-upload .k-dropzone {
|
|
padding: 1px;
|
|
height: 2.5em;
|
|
}
|
|
|
|
.k-upload .k-upload-button {
|
|
float: right;
|
|
margin-top: 1px;
|
|
padding-bottom: 1px;
|
|
}
|
|
|
|
.k-upload .k-upload-status {
|
|
position: relative;
|
|
padding-left: 8px;
|
|
line-height: 2.5em;
|
|
right: 0px;
|
|
top: 0px;
|
|
}
|
|
|
|
.k-dropzone > em {
|
|
float: right;
|
|
padding-right: 20px;
|
|
line-height: 2.5em;
|
|
}
|
|
|
|
</style>
|
|
|
|
@using (Html.BeginForm())
|
|
{
|
|
@Html.AntiForgeryToken()
|
|
<input type="hidden" id="currentStep" value="@Model.CurrentStep" />
|
|
<input type="hidden" id="environment" value="@GlobalVars.DBConnection" />
|
|
|
|
if (ViewBag.Status == "Approved" && ViewBag.IsApprover == "true")
|
|
{
|
|
<input type="submit" value="Save" class="btn btn-primary btn-xs" />
|
|
<input type="button" value="Close" class="btn btn-primary btn-xs" id="CloseDocument" />
|
|
}
|
|
else if (ViewBag.Status == "Pending" && ViewBag.IsApprover == "true")
|
|
{
|
|
<div data-spy="affix">
|
|
<input type="submit" value="Save" class="btn btn-primary btn-xs" />
|
|
<input type="button" value="Approve" class="btn btn-success btn-xs" id="ApproveDocument" />
|
|
</div>
|
|
}
|
|
else if (ViewBag.Status == "Pending")
|
|
{
|
|
<div data-spy="affix">
|
|
<input type="submit" value="Save" class="btn btn-primary btn-xs" />
|
|
</div>
|
|
}
|
|
|
|
<div class="panel panel-default" style="font-size: 11px">
|
|
<div class="panel-body bg-warning">
|
|
<div class="form-horizontal col-sm-3">
|
|
<fieldset disabled>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">MRB #</label>
|
|
<div class="col-sm-4 col-sm-4">
|
|
@Html.TextBoxFor(model => model.MRBNumber, new { id = "txtMRBNumber", @class = "k-textbox", disabled = "disabled", style = "background-color:lightblue" })
|
|
</div>
|
|
|
|
</div>
|
|
</fieldset>
|
|
<div class="form-group">
|
|
<fieldset disabled>
|
|
<label class="control-label col-sm-4">MRB Raised Date:</label>
|
|
<div class="col-sm-8 col-sm-6">
|
|
@Html.TextBoxFor(model => model.MRBRaisedDate, new { id = "txtMRBRaisedDate", @class = "k-textbox", disabled = "disabled", style = "background-color:lightblue" })
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Approval Status:</label>
|
|
<div class="col-sm-8 col-sm-4">
|
|
@Html.TextBoxFor(model => model.ApprovalStatusString, new { id = "txtApprovalStatus", @class = "k-textbox", disabled = "disabled", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Approval Date:</label>
|
|
<div class="col-sm-4 col-sm-4">
|
|
@Html.TextBoxFor(model => model.ApprovalDate, new { id = "txtApprovalDate", @class = "k-textbox", disabled = "disabled", style = "background-color:lightblue" })
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-horizontal col-sm-3">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Owner:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("OwnerID")
|
|
.BindTo(new SelectList(ViewBag.Owners, "UserID", "FullName"))
|
|
.Value(Model.Owner.ToString())
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Module:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@(Html.Kendo().MultiSelect()
|
|
.Name("ModuleIds")
|
|
.BindTo(new SelectList(ViewBag.Modules, "ModuleID", "ModuleName"))
|
|
.Value(ViewBag.Nothing)
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">MRB Raised Area:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("MRBRaisedAreaID")
|
|
.BindTo(new SelectList(ViewBag.Modules, "ModuleID", "ModuleName"))
|
|
.Value(Model.MRBRaisedAreaID.ToString())
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">P/Ns Affected:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@(Html.Kendo().MultiSelect()
|
|
.Name("PartGroupIDs")
|
|
.BindTo(new SelectList(ViewBag.PartGroups, "PartGroupID", "PartGroupName"))
|
|
.Value(ViewBag.Nothing)
|
|
)
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
<div class="form-horizontal col-sm-3">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Title:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.Title, new { id = "txtTitle", @class = "k-textbox", style = "width: 100%" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Tool(s):</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@(Html.Kendo().MultiSelect()
|
|
.Name("ToolCSV")
|
|
.DataSource(ds => ds.Read(read => read.Action("GetTools", "MRB")))
|
|
.Value((Model.ToolCSV != null ? Model.ToolCSV.Split(',') : null))
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Tool comments:</label>
|
|
<div class="col-sm-8 col-sm-4">
|
|
@Html.TextBoxFor(model => model.Tool, new { id = "txtTool", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Process:</label>
|
|
<div class="col-sm-8 col-sm-6">
|
|
@Html.TextBoxFor(model => model.Process, new { id = "txtProcess", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">CA#</label>
|
|
<div class="col-sm-8 col-sm-6">
|
|
@Html.TextBoxFor(model => model.CANo, new { @class = "k-textbox" })
|
|
<a href='/CorrectiveAction/Edit?IssueID=@Model.CANo' target='_blank'>View CA</a>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="form-horizontal col-sm-3">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4"># Of Lots Affected:</label>
|
|
<div class="col-sm-8 col-sm-4">
|
|
@Html.TextBoxFor(model => model.NumberOfLotsAffected, new { id = "txtNumberOfLotsAffected", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4"># Of Wafers Affected:</label>
|
|
<div class="col-sm-8 col-sm-4">
|
|
@Html.TextBoxFor(model => model.NumberOfWafersAffected, new { id = "txtNumberOfWafersAffected", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4"># Of Dies Affected:</label>
|
|
<div class="col-sm-8 col-sm-4">
|
|
@Html.TextBoxFor(model => model.NumberOfDiesAffected, new { id = "txtNumberOfDiesAffected", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Details Folder</label>
|
|
<div class="col-sm-8 col-sm-4">
|
|
@Html.TextBoxFor(model => model.DetailsFolder, new { id = "txtDetailsFolder", @class = "k-textbox", style = "width: 100%" })
|
|
<input type="button" value="Click here for Details" class="btn btn-primary btn-xs" id="btnDetailFolder" />
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 11px">
|
|
<div class="panel-body bg-warning">
|
|
<div class=" col-sm-6">
|
|
<div class="form-group">
|
|
<label class="control-label">Issue Description:</label>
|
|
<div>
|
|
@Html.TextAreaFor(model => model.IssueDescription, 12, 60, new { id = "txtIssueDescription", @class = "form-control", style = "font-size: 11px" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-sm-6"><label class="control-label">Attachment:</label></div>
|
|
<div class="col-sm-6 pull-right">
|
|
@(Html.Kendo().Upload()
|
|
.Name("files")
|
|
.Async(a => a
|
|
.Save("AttachSave", "MRB", new { mrbNumber = Model.MRBNumber })
|
|
.AutoUpload(true)
|
|
)
|
|
.ShowFileList(false)
|
|
.Events(events => events
|
|
.Success("onFileUploadSuccess")
|
|
.Upload("checkFileType")
|
|
)
|
|
)
|
|
</div>
|
|
</div>
|
|
<div>
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.MRBAttachment>()
|
|
.Name("Attachments")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.AttachmentID).Visible(false);
|
|
columns.Bound(a => a.MRBNumber).Visible(false);
|
|
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
|
|
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "MRB/#=FileName#' target='_blank'>#=FileName#</a>");
|
|
columns.Bound(a => a.FullName);
|
|
columns.Bound(a => a.UploadDate).Format("{0:MM/dd/yy hh:mm:ss}");
|
|
columns.Command(command => command.Custom("Delete").Click("DeleteAttachment"));
|
|
columns.Command(command => command.Custom("View").Click("DownloadAttachment"));
|
|
})
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:180px; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.AttachmentID);
|
|
})
|
|
.PageSize(10)
|
|
.Read(read => read.Action("Attachment_Read", "MRB", new { mrbNumber = Model.MRBNumber }))
|
|
)
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 11px">
|
|
<div class="panel-body bg-warning">
|
|
<div class="col-sm-3">
|
|
<div class="form-group">
|
|
<label class="control-label">Issue Detected Date:</label>
|
|
<div>
|
|
@*@Html.TextBoxFor(model => model.IssueDetectedDate, new { id = "txtIssueDetectedDate", @class = "k-textbox" })*@
|
|
@(Html.Kendo().DateTimePickerFor(model => model.IssueDetectedDate)
|
|
.Name("txtIssueDetectedDate")
|
|
//.Value()
|
|
)
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
<div class="form-group">
|
|
<label class="control-label">Issue Start Date/Time:</label>
|
|
<div>
|
|
@(Html.Kendo().DateTimePickerFor(model => model.IssueStartDate)
|
|
.Name("txtIssueStartDate")
|
|
.Events(e => e.Change("IssueStartTimeChangeAlert"))
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
<div>
|
|
<label class="control-label">Issue End Date/Time:</label>
|
|
<div>
|
|
@(Html.Kendo().DateTimePickerFor(model => model.IssueEndDate)
|
|
.Name("txtIssueEndDate")
|
|
.Events(e => e.Change("IssueEndTimeChangeAlert"))
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-horizontal col-sm-3">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-5">Customer Impacted?:</label>
|
|
<div class="form-control-static col-sm-5">
|
|
@Html.EditorFor(model => model.CustomerImpacted)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 11px">
|
|
<div class="panel-body bg-warning">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="control-label">Risk Assessments:</label>
|
|
<div>
|
|
@(Html.Kendo().MultiSelect()
|
|
.Name("RiskAssessmentIDs")
|
|
.BindTo(new SelectList(ViewBag.RiskAssessments, "RiskAssessmentID", "RiskAssessmentName"))
|
|
.Value(ViewBag.Nothing)
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class=" col-sm-12">
|
|
<div class="form-group">
|
|
<label class="control-label">Notes:</label>
|
|
<div>
|
|
@Html.TextAreaFor(model => model.Notes, 12, 50, new { id = "txtNotes", @class = "form-control", style = "font-size: 11px" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel-body bg-warning">
|
|
<div>
|
|
<input type="button" id="AddContainmentActionItem" value="Add Containment Action" class="btn btn-primary btn-xs" />
|
|
</div>
|
|
<div id="containmentAction" class="k-content">
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.ContainmentActionObj>()
|
|
.Name("ContainmentActions")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(l => l.ContainmentActionID).Visible(false);
|
|
columns.Bound(l => l.ResponsibilityOwnerID).Visible(false);
|
|
columns.Bound(l => l.CurrentResponsibilityOwnerID).Visible(false);
|
|
columns.Bound(l => l.ContainmentAction);
|
|
columns.Bound(l => l.ResponsibilityOwner).Width("150px"); ; ;
|
|
columns.Bound(l => l.ECD).Format("{0:d}").Width("150px"); ;
|
|
columns.Bound(l => l.ImplementedDate).Format("{0:d}").Width("150px");
|
|
columns.Command(c => c.Custom("Edit").Click("EditContainmentActionItem")).Width("90px");
|
|
// columns.Template(t => { }).HeaderTemplate("").ClientTemplate(@"
|
|
// <a href='javascript: void(0)' class='abutton edit' onclick='editContainmentRow(this)' title='button edit'>button edit</a>
|
|
// <a href='javascript: void(0)' class='abutton delete' onclick='deleteContainmentRow(this)' title='button delete'>button delete</a>").Width("150px");
|
|
|
|
columns.Template(t => { }).HeaderTemplate("").ClientTemplate(@"
|
|
<a href='javascript: void(0)' class='abutton delete' onclick='deleteContainmentRow(this)' title='button delete'>button delete</a>").Width("150px");
|
|
|
|
})
|
|
//.ToolBar(toolbar => toolbar.Create().Text("Add Contianment Action"))
|
|
.Editable(editable => editable.Mode(GridEditMode.InLine))
|
|
.HtmlAttributes(new { style = "width:100%; font-size: 12px" })
|
|
.Scrollable()
|
|
.Sortable()
|
|
.Filterable()
|
|
//.Events(e => e.Edit("onContainmentEdit"))
|
|
.Pageable(pageable => pageable
|
|
.Refresh(true)
|
|
.PageSizes(true)
|
|
.ButtonCount(5)
|
|
)
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.Model(model =>
|
|
{
|
|
model.Id(l => l.ContainmentActionID);
|
|
model.Field(p => p.ContainmentActionID).Editable(false);
|
|
model.Field(p => p.MRBNumber).DefaultValue(Model.MRBNumber);// Set the MRB Number as a default value for grid model field
|
|
|
|
})
|
|
.PageSize(50)
|
|
.Read(read => read.Action("GetContainmentActions", "MRB", new { mrbNumber = Model.MRBNumber }))
|
|
//.Create(create => create.Action("InsertContainmentAction", "MRB"))
|
|
//.Update(update => update.Action("UpdateContainmentAction", "MRB"))
|
|
.Destroy(destroy => destroy.Action("DeleteContainmentAction", "MRB"))
|
|
)
|
|
|
|
)
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading" style="padding-top: 5px; font-size: 12px;">
|
|
|
|
<table cellspacing="50" cellpadding="50" border="0" width="100%">
|
|
<tr>
|
|
<td width="33%">
|
|
<a class="k-button k-button-icontext k-grid-add" href="javascript: void(0)" id="AddDisposition" style="padding-left: 10px;">
|
|
<span class="k-icon k-add"></span>
|
|
Add Disposition
|
|
</a>
|
|
</td>
|
|
<td width="33%">
|
|
<div class="text-center">
|
|
@if (GlobalVars.IsAdmin(Session) && (Request.IsAuthenticated))
|
|
{
|
|
<a class="k-button" href="javascript: void(0)" id="addMRBFlagAndHoldToSPN" style="padding-left: 10px;">
|
|
Add MRB Flag/Hold to SPN
|
|
</a>
|
|
}
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<table class="pull-right" border="0" cellspacing="5">
|
|
<tr>
|
|
<td valign="middle">
|
|
<ul style="padding-right: 10px; list-style-type: none;">
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" style="font-size: 12px">MRB Flag/Hold Reports<b class="caret"></b></a>
|
|
<ul class="dropdown-menu" style="font-size: 11px">
|
|
<li><a href="#" id="mrbReport">Not implemented yet.</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="dispositionsID" class="k-content">
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.Disposition>()
|
|
.Name("Dispositions")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(l => l.DispositionID).Visible(false);
|
|
columns.Bound(l => l.MRBNumber).Visible(false);
|
|
columns.Bound(l => l.DispositionType).Width("70px");
|
|
columns.Bound(l => l.DispositionName).Width("150px"); ;
|
|
//columns.Bound(l => l.CloseToQDBOption).ClientTemplate("#=CloseToQDBOption.CloseToQDBOption#").Width("120px");
|
|
columns.Bound(l => l.CloseToQDBOptionString).Width("120px");
|
|
columns.Bound(l => l.DispositionNotes);
|
|
|
|
columns.Command(command => {
|
|
command.Custom("Edit").Click("EditDisposition").HtmlAttributes(new { style = "font-size: 8px" });
|
|
command.Custom("Delete").Click("DeleteDisposition").HtmlAttributes(new { style = "font-size: 8px" }); ; }
|
|
).Width("150px");
|
|
//columns.Template(t => { }).HeaderTemplate("").ClientTemplate(@"
|
|
//<a href='javascript: void(0)' class='abutton edit' onclick='editDispositionRow(this)' title='button edit'>button edit</a>
|
|
//<a href='javascript: void(0)' class='abutton delete' onclick='deleteDispositionRow(this)' title='button delete'>button delete</a>").Width("100px");
|
|
|
|
})
|
|
//.ToolBar(toolbar => toolbar.Create().Text("Add Disposition Notes"))
|
|
//.Editable(editable => editable.Mode(GridEditMode.InLine))
|
|
.HtmlAttributes(new { style = "height: 360px; width:100%; font-size: 10px" })
|
|
.Scrollable()
|
|
.Sortable()
|
|
.Filterable()
|
|
//.Events(e => e.Edit("onDispositionEdit"))
|
|
.Pageable(pageable => pageable
|
|
.Refresh(true)
|
|
.PageSizes(true)
|
|
.ButtonCount(5))
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.Model(model =>
|
|
{
|
|
model.Id(l => l.DispositionID);
|
|
model.Field(p => p.MRBNumber).DefaultValue(Model.MRBNumber);// Set the MRB Number as a default value for grid model field
|
|
//model.Field(l => l.CloseToQDBOption).DefaultValue(new Fab2ApprovalSystem.ViewModels.CloseToQDBOptionViewModel()
|
|
//{
|
|
// CloseToQDBOptionID = 0,
|
|
// CloseToQDBOption = "No"
|
|
//});
|
|
//model.Field(l => l.DispositionType).Editable(false);
|
|
//model.Field(l => l.DispositionName).Editable(false);
|
|
})
|
|
.PageSize(50)
|
|
.Read(read => read.Action("GetDispostions", "MRB", new { mrbNumber = Model.MRBNumber }))
|
|
//.Create(create => create.Action("InsertDisposition", "MRB"))
|
|
//.Update(update => update.Action("UpdateDisposition", "MRB")) //.Events(e => e.RequestEnd("DispositionOnUpdate"))
|
|
//.Destroy(destroy => destroy.Action("DeleteDisposition", "MRB"))
|
|
)
|
|
|
|
)
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-heading" style="padding-top: 5px;">
|
|
|
|
|
|
<table cellspacing="50" cellpadding="50" border="0" width="100%">
|
|
<tr>
|
|
<td>
|
|
<table class="pull-left" border="0" cellspacing="5">
|
|
<tr>
|
|
<td valign="middle">
|
|
<ul>
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" style="font-size: 12px">Lot Options<b class="caret"></b></a>
|
|
<ul class="dropdown-menu" style="font-size: 11px">
|
|
<li><a href="#" id="showLotSearchFormButton">Search Lots</a></li>
|
|
<!--<li><a href="#" id="lotAddFormButton">Add Lot</a></li>-->
|
|
<li><a href="#" id="yieldParamTrend">Yield Params Trend</a></li>
|
|
<li><a href="#" id="lotExport">Export Lots</a></li>
|
|
<li><a href="#" id="lotDeleteAllButton">Delete All Lots</a></li>
|
|
<li><a href="#" id="ExportMRBHoldFlagReport">Export MRBHoldFlag Report</a></li>
|
|
<li><a href="#" id="PreviewMRBHoldFlagTobeSentToSPN">Preview MRBHoldFlag To be sent to SPN</a></li>
|
|
|
|
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
@*<td>
|
|
<button class="k-textbox" data-toggle="modal" id="showLotSearchFormButton">
|
|
Search Lots
|
|
</button>
|
|
</td>
|
|
<td> </td>
|
|
<td>
|
|
<button class="k-textbox" data-toggle="modal" id="lotAddFormButton">
|
|
Add Lot
|
|
</button>
|
|
</td>
|
|
<td> </td>
|
|
<td>
|
|
<button class="k-textbox" id="yieldParamTrend">
|
|
Yield Params Trend
|
|
</button>
|
|
</td>*@
|
|
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td>
|
|
|
|
<table class="pull-right" cellspacing="50" cellpadding="50" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
@(Html.Kendo().Upload()
|
|
.Name("Lotfile")
|
|
.Messages(m => m.Select("Import Lots using an Excel file"))
|
|
.Async(a => a.Save("ExcelLotOpen", "MRB", new { mrbNumber = Model.MRBNumber }).AutoUpload(true))
|
|
.ShowFileList(false)
|
|
|
|
.Events(events => events.Success("onLotFileUploadSuccess").Error("onLotUploadError").Upload("onLotUpload"))
|
|
)
|
|
</td>
|
|
<td>
|
|
@if (ViewBag.IsApprover == "true")
|
|
{
|
|
@*<input type="buttodn" value="Send MRB Hold Flag to SPN" class="btn btn-danger btn-xs" id="SendMRBSPNFlag" />*@
|
|
}
|
|
|
|
</td>
|
|
<td> </td>
|
|
|
|
<td>
|
|
<label class="control-label">Set All Lots to Dispo Type:</label>
|
|
</td>
|
|
<td> </td>
|
|
<td>
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("DispoTypes")
|
|
.BindTo(new SelectList(ViewBag.DispoTypes, "DispositionType", "DispositionType"))
|
|
.Value("1")
|
|
)
|
|
</td>
|
|
|
|
<td> </td>
|
|
<td>
|
|
<input type="button" value="Go" class="btn btn-primary btn-xs" id="setDispoType" />
|
|
|
|
</td>
|
|
|
|
|
|
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
|
|
<div class="panel-body bg-warning">
|
|
<div class="col-sm-offset-0">
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.Lot>()
|
|
.Name("Lots")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(l => l.LotID).Visible(false);
|
|
|
|
|
|
columns.Bound(l => l.LotNumber);
|
|
columns.Bound(l => l.DieLotNumber);
|
|
columns.Bound(l => l.WipPartNo);
|
|
columns.Bound(l => l.DispoType).Width("50px"); ;
|
|
columns.Bound(l => l.WaferCount);
|
|
columns.Bound(l => l.DiePartNo);
|
|
columns.Bound(l => l.DieCount);
|
|
columns.Bound(l => l.SourceLot);
|
|
columns.Bound(l => l.TotalCost);
|
|
columns.Bound(l => l.ProductFamily).Width("50px");
|
|
columns.Bound(l => l.Gen).Width("50px");
|
|
columns.Bound(l => l.Hexsize).Width("50px");
|
|
columns.Bound(l => l.Voltage).Width("50px");
|
|
columns.Bound(l => l.Location).Width("50px");
|
|
columns.Bound(l => l.Status).Width("50px");
|
|
columns.Bound(l => l.QualityCode).Width("50px");
|
|
columns.Bound(l => l.LotID).Template(@<text> @Html.ActionLink(@item.LotNumber.ToString(), null)</text>)
|
|
.ClientTemplate("<a href='http://" + GlobalVars.WSR_URL + "/user/wsr2/wsr_lot.php?lot=#=LotNumber#' target='_blank'>View</a>").Title("History").Width("50px");
|
|
columns.Bound(l => l.LotID).Template(@<text> @Html.ActionLink(@item.LotNumber.ToString(), null)</text>)
|
|
.ClientTemplate("<a href='http://" + GlobalVars.WSR_URL + "/user/probe/wafyld.php?lot=#=LotNumber#' target='_blank'>View</a>").Title("Probe Results").Width("50px");
|
|
columns.Bound(l => l.LotID).Template(@<text> @Html.ActionLink(@item.LotNumber.ToString(), null)</text>)
|
|
.ClientTemplate("<a href='http://" + GlobalVars.WSR_URL + "/user/probe/allmaps.php?lot=#=LotNumber#' target='_blank'>View</a>").Title("Wafer Maps").Width("50px");
|
|
columns.Bound(l => l.LotID).Template(@<text> @Html.ActionLink(@item.LotNumber.ToString(), null)</text>)
|
|
.ClientTemplate("<a href='file://///temirwfp001/AVIArchive/NSX/import/current/lot/#=LotNumber#' + lot' target='_blank'>Show</a>").Title("AVI").Width("50px");
|
|
|
|
columns.Bound(l => l.LotID).Template(@<text> @Html.ActionLink(@item.LotNumber.ToString(), null)</text>)
|
|
.ClientTemplate("<a href='file:////" + GlobalVars.NDriveURL + "/FAB_Engineering/01_Other/FabLotDispositionLotInfo/#=ParentLotNumber#' + ' target='_blank'>Show</a>").Title("Lot Data").Width("50px");
|
|
|
|
columns.Bound(p => p.OtherMRBs).ClientTemplate("#=buildMRBLinks(OtherMRBs)#");
|
|
//columns.Bound(l => l.LotDispositionsLinkedToLot).Width("100px");
|
|
columns.Bound(p => p.LotDispositionsLinkedToLot).ClientTemplate("#=buildLDLinks(LotDispositionsLinkedToLot)#");
|
|
|
|
//columns.Command(command => { command.Edit(); command.Destroy(); }).Width("200px");
|
|
columns.Template(t => { }).HeaderTemplate("").ClientTemplate(@"
|
|
<a href='javascript: void(0)' class='abutton edit' onclick='editRow(this)' title='button edit'>button edit</a>
|
|
<a href='javascript: void(0)' class='abutton delete' onclick='deleteRow(this)' title='button delete'>button delete</a>");
|
|
})
|
|
//.ToolBar(toolbar => toolbar.Create().Text("Add Lot"))
|
|
.Editable(editable => editable.Mode(GridEditMode.InLine))
|
|
.Sortable()
|
|
.Scrollable()
|
|
//.Filterable()
|
|
|
|
.HtmlAttributes(new { style = "height:325px; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Events(e => e.RequestEnd("UpdateLotWaferDieCount"))
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.LotID);
|
|
model.Field(p => p.LotID).Editable(false);
|
|
model.Field(p => p.LotNumber).Editable(false);
|
|
model.Field(p => p.DieLotNumber).Editable(false);
|
|
model.Field(p => p.WipPartNo).Editable(false);
|
|
model.Field(p => p.WaferCount).Editable(false);
|
|
model.Field(p => p.DiePartNo).Editable(false);
|
|
model.Field(p => p.DieCount).Editable(false);
|
|
model.Field(p => p.SourceLot).Editable(false);
|
|
model.Field(p => p.TotalCost).Editable(false);
|
|
model.Field(p => p.ProductFamily).Editable(false);
|
|
model.Field(p => p.Gen).Editable(false);
|
|
model.Field(p => p.Hexsize).Editable(false);
|
|
model.Field(p => p.Voltage).Editable(false);
|
|
model.Field(p => p.Location).Editable(false);
|
|
model.Field(p => p.Status).Editable(false);
|
|
model.Field(p => p.QualityCode).Editable(false);
|
|
model.Field(p => p.OtherMRBs).Editable(false);
|
|
model.Field(p => p.LotDispositionsLinkedToLot).Editable(false);
|
|
}
|
|
)
|
|
.PageSize(50)
|
|
.Read(read => read.Action("GetMRBLots", "MRB", new { mrbNumber = Model.MRBNumber }))
|
|
.Update(update => update.Action("UpdateMRBLot", "MRB"))
|
|
.Destroy(destroy => destroy.Action("DeleteMRBLot", "MRB"))
|
|
.Events(e => e.Error("UpdateMRBLotError"))
|
|
//.Create(create => create.Action("CreateLots", "MRB"))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
.Events(e => e.Edit("onEdit"))
|
|
.Pageable(pageable => pageable
|
|
.Refresh(true)
|
|
.PageSizes(true)
|
|
.ButtonCount(5))
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 11px">
|
|
<div class="panel-body bg-warning">
|
|
@if (ViewBag.IsApprover == "true")
|
|
{
|
|
<div class="form-horizontal col-sm-4">
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Module Owner Approver:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.OwnerApprover, new { id = "OwnerApprover", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Product Engineering Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.PEApprover, new { id = "PEApprover", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-horizontal col-sm-4">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Mfg Engineering Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.MfgEngineeringAppover, new { id = "MfgEngineeringAppover", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Other Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.OtherApprovers, new { id = "OtherApprovers", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-horizontal col-sm-4">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Yield Engineering Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.YEApprover, new { id = "YEApprover", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Quality Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.QualityApprovers, new { id = "QualityApprovers", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="form-horizontal col-sm-4">
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Module Owner Approver:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.OwnerApprover, new { id = "OwnerApprover", @class = "k-textbox", style = "width:100%", disabled = "disabled" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Product Engineering Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.PEApprover, new { id = "PEApprover", @class = "k-textbox", style = "width:100%", disabled = "disabled" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-horizontal col-sm-4">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Mfg Engineering Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.MfgEngineeringAppover, new { id = "MfgEngineeringAppover", @class = "k-textbox", style = "width:100%", disabled = "disabled" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Other Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.OtherApprovers, new { id = "OtherApprovers", @class = "k-textbox", style = "width:100%", disabled = "disabled" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-horizontal col-sm-4">
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Yield Engineering Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.YEApprover, new { id = "YEApprover", @class = "k-textbox", style = "width:100%", disabled = "disabled" })
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-sm-4">Quality Approver/s:</label>
|
|
<div class="col-sm-8 col-sm-8">
|
|
@Html.TextBoxFor(model => model.QualityApprovers, new { id = "QualityApprovers", @class = "k-textbox", style = "width:100%", disabled = "disabled" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
</div>
|
|
</div>
|
|
|
|
@*<div class="panel panel-default" style="font-size: 11px">
|
|
<div class="panel-body bg-warning">
|
|
|
|
</div>
|
|
</div>*@
|
|
}
|
|
|
|
<!-- Button trigger modal -->
|
|
<!-- Modal -->
|
|
|
|
<div class="modal fade" id="LotSearchForm" tabindex="0" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Lot Search</h4>
|
|
</div>
|
|
|
|
<div class="modal-body ">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="controls">
|
|
<label for="Category">Search By:</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<div id="Criteria" class="k-content">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("LotCriteria")
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
//.Events(e => e.Change("change"))
|
|
.BindTo(new List<SelectListItem>() {
|
|
new SelectListItem() {
|
|
Text = "Lot/DieLotNumber",
|
|
Value = "LotNo"
|
|
},
|
|
new SelectListItem() {
|
|
Text = "Location",
|
|
Value = "Location"
|
|
}
|
|
//,new SelectListItem() {
|
|
// Text = "Gen",
|
|
// Value = "Gen"
|
|
//}
|
|
})
|
|
.Value("1")
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
@Html.TextBox("txtSearch", null, new { @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
@*<input style="margin-top: 5px;" type="button" id='jqxButtonSearchLots' value="Search Lots" class="k-textbox" />*@
|
|
<button type="button" class="k-textbox" id='jqxButtonSearchLots'>Search Lots</button>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<select multiple id="jiraVersion" style="height: 250px; width: 200px; font-family: Tahoma; border-color: lightgrey" class="jqx-combobox-multi-item"></select>
|
|
@*<div id='lstSearchedLots'>
|
|
</div>*@
|
|
<br />
|
|
<div>
|
|
@*<input style="margin-top: 20px;" type="button" id='jqxButtonAddLots' value="Add Lots" class="k-textbox" />*@
|
|
<button type="button" class="k-textbox" id='jqxButtonAddLots'>Add Lots</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<div id='lstSelectedLots'>
|
|
|
|
</div>
|
|
<br />
|
|
<div>
|
|
@*<input style="margin-top: 20px;" type="button" id='jqxButtonRemoveLots' value="Remove Lots" class="k-textbox" />*@
|
|
<button type="button" class="k-textbox" id='jqxButtonRemoveLots'>Remove Lots</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="k-textbox" data-dismiss="modal">Close</button>
|
|
<button type="button" class="k-textbox" id="submitSelectLot">Save changes</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal fade" id="ApprovalComments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Enter Approval Comments:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<textarea class="form-control" rows="3" id="approvalComments"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="submitApprovalComments">Confirm Approval</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="LotAddForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Enter Lot Information:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="LotNumber">Wafer Lot#:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="LotNumber" placeholder="LotNumber">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="LotDescription">Lot Description:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="LotDescription" placeholder="LotDescription">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="NewPartNo">New Part#:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="NewPartNo" placeholder="NewPartNo">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="WipPartNo">WIP Part No:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="WipPartNo" placeholder="WipPartNo">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="DiePartNo">DiePart#:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="DiePartNo" placeholder="DiePartNo">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="ProductFamily">Product Family:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="ProductFamily" placeholder="ProductFamily">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Gen">Gen:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="Gen" placeholder="Gen">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Channel">Channel:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="Channel" placeholder="Channel">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Hexsize">Hexsize:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="Hexsize" placeholder="Hexsize">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Location">Location:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="Location" placeholder="Location">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="WaferCount">Wafer Count:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="WaferCount" placeholder="WaferCount">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="DieCount">Die Count:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="DieCount" placeholder="DieCount">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Voltage">Voltage:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="Voltage" placeholder="Voltage">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="TotalCost">Total Cost:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="TotalCost" placeholder="TotalCost">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="DieLotNumber">Die Lot#:</label>
|
|
<div class="controls">
|
|
<input type="number" class="form-control" id="DieLotNumber" placeholder="DieLotNumber">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Dispo Type">Dispo Type:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="DispoType" placeholder="DispoType">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="Status">Status:</label>
|
|
<div class="controls">
|
|
<input type="text" class="form-control" id="Status" placeholder="Status">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="submitLotAdd">Save changes</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal fade modal-vertical-centered" id="pleaseWaitDialog" tabindex="-1" role="progressbar" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog " style="width: 500px; height: 200px">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5>Please wait while data is being set to SPN...</h5>
|
|
</div>
|
|
<div class="progress progress-striped active">
|
|
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
|
|
<span class="sr-only">100% Complete</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="ContainmentActionForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content" style="width: 600px">
|
|
<div class="modal-header" style="background-color: #e4daa1; font-size: 15px;">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Containment Action:</h4>
|
|
</div>
|
|
<div class="modal-body" style="background-color: #75adc6; font-size: 12px;">
|
|
<table width="100%">
|
|
<tr>
|
|
<td width="100%">
|
|
<table class="table-condensed" border="0" width="100%">
|
|
|
|
<tr>
|
|
<td width="25%">
|
|
<label for="txtContainmentAction">Containment Action:</label>
|
|
</td>
|
|
<td width="75%">
|
|
@Html.TextArea("txtContainmentAction", "", 5, 20, new { @class = "k-textbox", style = "width:100%" })
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="25%">
|
|
<label for="ResponsibilityOwner">Responsibility Owner:</label>
|
|
</td>
|
|
<td width="75%">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("ResponsibilityOwnerIds")
|
|
.BindTo(new SelectList(ViewBag.UserList, "UserID", "UserName"))
|
|
.Value(ViewBag.Nothing)
|
|
.OptionLabel("Select")
|
|
)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="25%">
|
|
<label for="txtECD">ECD:</label>
|
|
</td>
|
|
<td width="75%">
|
|
@(Html.Kendo().DatePicker()
|
|
.Name("txtECD")
|
|
)
|
|
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="25%">
|
|
<label for="txtImplementedDate">Implemented Date:</label>
|
|
</td>
|
|
<td width="75%">
|
|
@(Html.Kendo().DatePicker()
|
|
.Name("txtImplementedDate")
|
|
)
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
|
|
</div>
|
|
<div class="modal-footer" style="background-color: #e4daa1; font-size: 15px;">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
|
<button type="button" class="btn btn-primary" id="SaveContainmentAction">OK</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@Html.Partial("_DispositionType")
|
|
|
|
<script type="text/javascript">
|
|
|
|
var isDirty = 'false';
|
|
var connection = $("#environment").val();
|
|
var containmentActionOperation = '';
|
|
var containmentActionItemID;
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
$("#OwnerID").on('change', function () { isDirty = 'true'; });
|
|
$("#txtTool").on('change', function () { isDirty = 'true'; });
|
|
$("#ToolCSV").on('change', function () { isDirty = 'true'; });
|
|
$("#txtNumberOfLotsAffected").on('change', function () { isDirty = 'true'; });
|
|
$("#txtIssueDescription").on('change', function () { isDirty = 'true'; });
|
|
$("#DepartmentIDs").on('change', function () { isDirty = 'true'; });
|
|
$("#MRBRaisedDate").on('change', function () { isDirty = 'true'; });
|
|
$("#ModuleIds").on('change', function () { isDirty = 'true'; });
|
|
$("#txtProcess").on('change', function () { isDirty = 'true'; });
|
|
$("#MRBRaisedAreaID").on('change', function () { isDirty = 'true'; });
|
|
$("#PartGroupIDs").on('change', function () { isDirty = 'true'; });
|
|
$("#txtIssueDetectedDate").on('change', function () { isDirty = 'true'; });
|
|
$("#txtIssueStartDate").on('change', function () { isDirty = 'true'; });
|
|
$("#txtIssueEndDate").on('change', function () { isDirty = 'true'; });
|
|
$("#RiskAssessmentIDs").on('change', function () { isDirty = 'true'; });
|
|
|
|
$('form').submit(function (e) {
|
|
e.preventDefault();
|
|
SaveData();
|
|
return false;
|
|
});
|
|
|
|
|
|
$('#yieldParamTrend').on('click', function (e) {
|
|
window.open('http://@GlobalVars.WSR_URL/user/yieldchart/form.php', '_blank');
|
|
|
|
|
|
});
|
|
|
|
var SaveData = function () {
|
|
|
|
isDirty = 'false';
|
|
|
|
var mrbNumber = $("#txtMRBNumber").val();
|
|
var title = $("#txtTitle").val();
|
|
var mrbRaisedAreaID = $("#MRBRaisedAreaID").data("kendoDropDownList").value();
|
|
var owner = $("#OwnerID").data("kendoDropDownList").value();
|
|
var tool = $("#txtTool").val();
|
|
var toolCSV = $("#ToolCSV").data("kendoMultiSelect").value().join(",");
|
|
var numberOfLotsAffected = $("#txtNumberOfLotsAffected").val();
|
|
var moduleIDs = $("#ModuleIds").data("kendoMultiSelect").value();
|
|
var process = $("#txtProcess").val();
|
|
var CANo = $("#CANo").val();
|
|
var partGroupIDs = $("#PartGroupIDs").data("kendoMultiSelect").value();
|
|
var numberOfWafersAffected = $("#txtNumberOfWafersAffected").val();
|
|
var numberOfDiesAffected = $("#txtNumberOfDiesAffected").val();
|
|
var issueDescription = $("#txtIssueDescription").val();
|
|
var notes = $("#txtNotes").val();
|
|
|
|
var issueDetectedDate = $("#txtIssueDetectedDate").val();
|
|
var issueStartDate = $("#txtIssueStartDate").val();
|
|
var issueEndDate = $("#txtIssueEndDate").val();
|
|
|
|
var riskAssessmentIDs = $("#RiskAssessmentIDs").data("kendoMultiSelect").value();
|
|
//var dispositionIDs = $("#DispositionIDs").data("kendoMultiSelect").value();
|
|
|
|
var ownerApprover = $("#OwnerApprover").val();
|
|
var peApprover = $("#PEApprover").val();
|
|
var mfgEngineeringAppover = $("#MfgEngineeringAppover").val();
|
|
var otherApprovers = $("#OtherApprovers").val();
|
|
var yeApprover = $("#YEApprover").val();
|
|
var qualityApprovers = $("#QualityApprovers").val();
|
|
var detailsFolder = $("#txtDetailsFolder").val();
|
|
|
|
var customerImpacted;
|
|
if ($('#CustomerImpacted').is(':checked'))
|
|
customerImpacted = 1;
|
|
else
|
|
customerImpacted = 0;
|
|
|
|
|
|
$.ajax({
|
|
url: '/MRB/Edit',
|
|
type: "POST",
|
|
//dataType: "text",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(
|
|
{
|
|
MRBNumber: mrbNumber,
|
|
MRBRaisedAreaID: mrbRaisedAreaID,
|
|
Owner: owner,
|
|
Title: title,
|
|
Tool: tool,
|
|
NumberOfLotsAffected: numberOfLotsAffected,
|
|
ModuleIDs: moduleIDs,
|
|
Process: process,
|
|
CANo: CANo,
|
|
PartGroupIDs: partGroupIDs,
|
|
NumberOfWafersAffected: numberOfWafersAffected,
|
|
NumberOfDiesAffected: numberOfDiesAffected,
|
|
IssueDescription: issueDescription,
|
|
Notes: notes,
|
|
IssueDetectedDate: issueDetectedDate,
|
|
IssueStartDate: issueStartDate,
|
|
IssueEndDate: issueEndDate,
|
|
RiskAssessmentIDs: riskAssessmentIDs,
|
|
//DispositionIDs: dispositionIDs,
|
|
OwnerApprover: ownerApprover,
|
|
PEApprover: peApprover,
|
|
MfgEngineeringAppover: mfgEngineeringAppover,
|
|
OtherApprovers: otherApprovers,
|
|
YEApprover: yeApprover,
|
|
QualityApprovers: qualityApprovers,
|
|
DetailsFolder: detailsFolder,
|
|
CustomerImpacted: customerImpacted,
|
|
ToolCSV: toolCSV
|
|
}),
|
|
success: function (result) {
|
|
|
|
alert("Data Saved");
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
|
|
alert("Failed " + jqXHR.responseText);
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
$('#CloseDocument').on('click', function () {
|
|
//if (isDirty == 'true') {
|
|
// isDirty = 'false';
|
|
// SaveData();
|
|
//}
|
|
|
|
SaveData();
|
|
$.ajax({
|
|
url: "/MRB/CloseDocument",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
mrb: $("#txtMRBNumber").val()
|
|
},
|
|
success: function (data) {
|
|
alert("Document successfully closed!!!")
|
|
var url = '@Url.Action("Edit", "MRB", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', $("#txtMRBNumber").val());
|
|
|
|
}
|
|
});
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}); // end of document.ready function
|
|
|
|
//
|
|
displayEmptySelectedLotsList();
|
|
//
|
|
//displayEmptySearchedLotsList();
|
|
|
|
function onFileUploadSuccess(e) {
|
|
|
|
if (e && e.response && e.response.errors) {
|
|
if (e.response.errors.length > 0) {
|
|
var msg = "There were errors while attaching files:\r\n";
|
|
e.response.errors.forEach(function (val, idx, ary) {
|
|
msg = msg + val + "\r\n";
|
|
});
|
|
alert(msg);
|
|
}
|
|
}
|
|
|
|
var grid = $("#Attachments").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
}
|
|
|
|
function checkFileType(e) {
|
|
|
|
var attachmentGrid = $("#Attachments").data("kendoGrid");
|
|
|
|
var files = e.files;
|
|
$.each(files, function () {
|
|
|
|
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt)$/)) {
|
|
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
|
|
e.preventDefault();
|
|
}
|
|
|
|
var i;
|
|
for (i = 0; i < attachmentGrid.dataSource.total(); i++) {
|
|
var item = attachmentGrid.dataSource.at(i);
|
|
if (item.FileName == this.name) {
|
|
if (confirm("Are you sure you want to overwrite file: " + this.name) == false) {
|
|
e.preventDefault();
|
|
alert("File upload aborted");
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
function onLotFileUploadSuccess(e) {
|
|
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
|
|
UpdateLotWaferDieCount();
|
|
|
|
}
|
|
|
|
function ConfirmLotExcelImport(e) {
|
|
|
|
if (confirm("No tool info for lot genealogy tracing, please validate to ensure all & only MRB affected child lots uploaded ")) {
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
|
|
function UpdateLotWaferDieCount()
|
|
{
|
|
$.ajax({
|
|
url: "/MRB/GetLotWaferDieCount",
|
|
type: "POST",
|
|
datatype: "json",
|
|
data: {
|
|
mrbNumber: $('#txtMRBNumber').val()
|
|
},
|
|
success: function (result) {
|
|
|
|
//var obj = JSON.parse(data);
|
|
var arrdata = result.split('~');
|
|
$('#txtNumberOfLotsAffected').val(arrdata[0]);
|
|
$('#txtNumberOfWafersAffected').val(arrdata[1]);
|
|
$('#txtNumberOfDiesAffected').val(arrdata[2]);
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
|
|
$("#Lotfile").click(function (e) {
|
|
|
|
var Tools = $("#ToolCSV").data("kendoMultiSelect").value();
|
|
|
|
if (Tools == "NA") {
|
|
if (confirm("No Tool was selected for Lot Genealogy Tracing\n Please validate to ensure all & only MRB affected child lots uploaded\n Do you wish to proceed?")) {
|
|
var msg = CanAddLots();
|
|
if (msg != null) {
|
|
alert(msg);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
else {
|
|
var msg = CanAddLots();
|
|
if (msg != null) {
|
|
alert(msg);
|
|
return false;
|
|
}
|
|
return true;
|
|
|
|
}
|
|
});
|
|
|
|
function onLotUploadError(e) {
|
|
|
|
// note that this event will fire if there are warnings returned by the server
|
|
var msg = '';
|
|
var doSuccessActions = false;
|
|
|
|
if (e.XMLHttpRequest != null) {
|
|
msg = e.XMLHttpRequest.responseText;
|
|
|
|
// if it's just a warning, set flag to run success event
|
|
if (e.XMLHttpRequest.status == 200)
|
|
doSuccessActions = true;
|
|
}
|
|
|
|
if (doSuccessActions) {
|
|
onLotFileUploadSuccess(e);
|
|
alert(msg);
|
|
} else {
|
|
alert('Error processing excel upload:\n' + msg);
|
|
}
|
|
|
|
}
|
|
|
|
function CanAddLots() {
|
|
|
|
var issueStartDate = $("#txtIssueStartDate").val();
|
|
var issueEndDate = $("#txtIssueEndDate").val();
|
|
|
|
if ((issueStartDate == "") || (issueEndDate == "")) {
|
|
return "Issue start and end date must be filled in.";
|
|
}
|
|
|
|
var toolIDs = $("#ToolCSV").data("kendoMultiSelect").value();
|
|
if ((toolIDs == null) || (toolIDs.length == 0)) {
|
|
return "At least one tool must be selected.";
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
function onLotUpload(e) {
|
|
|
|
/*var msg = CanAddLots();
|
|
if (msg != null) {
|
|
alert(msg);
|
|
e.preventDefault();
|
|
}*/
|
|
|
|
var files = e.files;
|
|
$.each(files, function () {
|
|
if (this.extension.toLowerCase() != ".xls" && this.extension.toLowerCase() != ".xlsx") {
|
|
alert("Only an excel file can be used to import Lots!")
|
|
e.preventDefault();
|
|
}
|
|
})
|
|
}
|
|
|
|
function DeleteAttachment(e) {
|
|
e.preventDefault();
|
|
if (confirm("Are you sure you want to delete this request?")) {
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
var fileName = dataItem.FileName;
|
|
var attachmentID = dataItem.AttachmentID;
|
|
|
|
$.ajax({
|
|
url: "/MRB/DeleteAttachment",
|
|
type: "POST",
|
|
datatype: "json",
|
|
data: {
|
|
attachmentID: attachmentID,
|
|
fileName: fileName
|
|
},
|
|
success: function (data) {
|
|
var grid = $("#Attachments").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// Region Search Lot
|
|
$("#showLotSearchFormButton").on('click', function () {
|
|
|
|
/* var msg = CanAddLots();
|
|
if (msg != null) {
|
|
alert(msg);
|
|
return false;
|
|
}
|
|
*/
|
|
//$("#lstSearchedLots").jqxListBox('clear');
|
|
if (confirm("Lot genealogy not traced, please manually select and validate all MRB affected child lots"))
|
|
{
|
|
|
|
clearSourceLotsListBox();
|
|
$("#lstSelectedLots").jqxListBox('clear');
|
|
$('#txtSearch').val('');
|
|
$("#LotSearchForm").modal('show');
|
|
}
|
|
return false;
|
|
})
|
|
|
|
|
|
function displayEmptySelectedLotsList() {
|
|
var source =
|
|
{
|
|
datatype: "json",
|
|
datafields: [
|
|
{ name: 'LotNo' }
|
|
],
|
|
id: 'id'
|
|
};
|
|
var dataAdapter = new $.jqx.dataAdapter(source);
|
|
// Create a jqxListBox
|
|
$("#lstSelectedLots").jqxListBox({
|
|
multipleextended: true, theme: "arctic", source: dataAdapter, displayMember: "LotNo", valueMember: "LotNo", width: 200, height: 250
|
|
});
|
|
}
|
|
|
|
//function displayEmptySearchedLotsList() {
|
|
// var source =
|
|
// {
|
|
// datatype: "json",
|
|
// datafields: [
|
|
// { name: 'LotNo' }
|
|
// ],
|
|
// id: 'id'
|
|
// };
|
|
// var dataAdapter = new $.jqx.dataAdapter(source);
|
|
// // Create a jqxListBox
|
|
// $("#lstSearchedLots").jqxListBox({
|
|
// multipleextended: true, theme: "arctic", source: dataAdapter, displayMember: "LotNo", valueMember: "LotNo", width: 200, height: 250
|
|
// });
|
|
//}
|
|
|
|
|
|
$("#jqxButtonSearchLots").on('click', function displayLots() {
|
|
var searchText = ($("#txtSearch").val());
|
|
var searchBy = $("#LotCriteria").data("kendoDropDownList").value();
|
|
var url = "/MRB/SearchLots";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
searchText: searchText,
|
|
searchBy: searchBy
|
|
},
|
|
success: function (data) {
|
|
|
|
|
|
clearSourceLotsListBox();
|
|
$.each(data, function (index, value) {
|
|
$('#jiraVersion').append($('<option>').text(value).val(index));
|
|
});
|
|
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
|
|
});
|
|
|
|
var clearSourceLotsListBox = function () {
|
|
$('#jiraVersion').each(function () {
|
|
this.options.length = 0;
|
|
$(this)[0].options.length = 0;
|
|
});
|
|
}
|
|
|
|
|
|
$('#jqxButtonAddLots').on('click', function () {
|
|
// get selected items.
|
|
var bfound = false;
|
|
var lots;
|
|
var selected = $('#jiraVersion option:selected');
|
|
var selectedIndices = []; // create an empty array
|
|
$.each($('#jiraVersion option:selected'), function (index, value) { // loop over each option
|
|
//selectedIndices.push(index); // add the index to the array
|
|
//alert(value.text);
|
|
var tempvalue = value.text;
|
|
var templabel = value.text;
|
|
|
|
var itemsAdded = $("#lstSelectedLots").jqxListBox('getItems');
|
|
if (itemsAdded != undefined) {
|
|
for (var x = 0; x < itemsAdded.length; x++) {
|
|
if (itemsAdded[x].label == templabel) {
|
|
bfound = true;
|
|
break;
|
|
};
|
|
};
|
|
|
|
if (!bfound) {
|
|
$("#lstSelectedLots").jqxListBox('addItem', { label: tempvalue, value: tempvalue });
|
|
if (lots == null)
|
|
lots = tempvalue;
|
|
else
|
|
lots += "~" + tempvalue;
|
|
}
|
|
|
|
bfound = false;
|
|
}
|
|
else {
|
|
|
|
$("#lstSelectedLots").jqxListBox('addItem', { label: tempvalue, value: tempvalue });
|
|
}
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
//$('#jqxButtonAddLots').on('click', function () {
|
|
// // get selected items.
|
|
// var bfound = false;
|
|
// var lots;
|
|
// var itemsToAdd = $('#lstSearchedLots').jqxListBox('getSelectedItems');
|
|
// if (itemsToAdd.length > 0) {
|
|
|
|
// for (var i = 0; i < itemsToAdd.length; i++) {
|
|
|
|
// if (itemsToAdd[i].label != undefined) {
|
|
|
|
// var tempvalue = itemsToAdd[i].value;
|
|
// var templabel = itemsToAdd[i].label;
|
|
|
|
// //if (i < itemsToAdd.length - 1)
|
|
// //{
|
|
// // check if the item exists in the seleced lots list
|
|
// var itemsAdded = $("#lstSelectedLots").jqxListBox('getItems');
|
|
// if (itemsAdded != undefined) {
|
|
// for (var x = 0; x < itemsAdded.length; x++) {
|
|
// if (itemsAdded[x].label == templabel) {
|
|
// bfound = true;
|
|
// break;
|
|
// };
|
|
// };
|
|
|
|
// if (!bfound) {
|
|
// $("#lstSelectedLots").jqxListBox('addItem', { label: templabel, value: tempvalue });
|
|
// if (lots == null)
|
|
// lots = tempvalue;
|
|
// else
|
|
// lots += "~" + tempvalue;
|
|
// }
|
|
|
|
// bfound = false;
|
|
// }
|
|
// else {
|
|
|
|
// $("#lstSelectedLots").jqxListBox('addItem', { label: templabel, value: tempvalue });
|
|
// }
|
|
|
|
// }
|
|
// };
|
|
|
|
|
|
// }
|
|
|
|
// // unselect all the selected items
|
|
// $("#lstSearchedLots").jqxListBox({ selectedIndex: -1 });
|
|
|
|
//});
|
|
|
|
|
|
$('#jqxButtonRemoveLots').on('click', function () {
|
|
// get items.
|
|
var userids;
|
|
var items = $("#lstSelectedLots").jqxListBox('getSelectedItems');
|
|
if (items != undefined) {
|
|
for (var i = items.length - 1; i >= 0; i--) {
|
|
$("#lstSelectedLots").jqxListBox('removeItem', items[i].value);
|
|
};
|
|
|
|
}
|
|
|
|
});
|
|
|
|
$("#submitSelectLot").on('click', function () {
|
|
|
|
var lots;
|
|
var items = $("#lstSelectedLots").jqxListBox('getItems');
|
|
if (items != undefined) {
|
|
for (var x = 0; x < items.length; x++) {
|
|
if (lots == undefined)
|
|
lots = items[x].value;
|
|
else
|
|
lots += "~" + items[x].value;
|
|
};
|
|
|
|
$.ajax({
|
|
url: "/MRB/AddLots",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
mrbNumber: $('#txtMRBNumber').val(),
|
|
lotNumbers: lots
|
|
},
|
|
success: function (data) {
|
|
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
|
|
$("#LotSearchForm").modal('hide');
|
|
|
|
//if (data != null && data != '')
|
|
//alert(data);
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
}
|
|
return false;
|
|
});
|
|
|
|
|
|
// EndRegion Search Lot =============================================================
|
|
|
|
$('#SubmitDocument').on('click', function () {
|
|
|
|
})
|
|
|
|
|
|
|
|
function onEdit(e) {
|
|
//on row edit replace the Delete and Edit buttons with Update and Cancel
|
|
$(e.container).find("td:last").html("<a href='javascript: void(0)' class='abutton update' onclick='updateRow()' title='button update'>button update</a> " +
|
|
"<a href='javascript: void(0)' class='abutton cancel' onclick='cancelRow()' title='button cancel'>button cancel</a>");
|
|
}
|
|
|
|
function cancelRow() {
|
|
grid = $("#Lots").data("kendoGrid");
|
|
grid.cancelRow();
|
|
}
|
|
|
|
function editRow(element) {
|
|
grid = $("#Lots").data("kendoGrid");
|
|
grid.editRow($(element).closest("tr"));
|
|
}
|
|
|
|
function updateRow() {
|
|
grid = $("#Lots").data("kendoGrid");
|
|
grid.saveRow();
|
|
}
|
|
|
|
function deleteRow(element) {
|
|
grid = $("#Lots").data("kendoGrid");
|
|
grid.removeRow($(element).closest("tr"));
|
|
}
|
|
|
|
//function createRow() {
|
|
// grid = $("#Lots").data("kendoGrid");
|
|
// grid.addRow();
|
|
//}
|
|
|
|
|
|
|
|
function onContainmentEdit(e) {
|
|
//on row edit replace the Delete and Edit buttons with Update and Cancel
|
|
$(e.container).find("td:last").html("<a href='javascript: void(0)' class='abutton update' onclick='updateContainmentRow()' title='button update'>button update</a> " +
|
|
"<a href='javascript: void(0)' class='abutton cancel' onclick='cancelContainmentRow()' title='button cancel'>button cancel</a>");
|
|
}
|
|
|
|
function cancelContainmentRow() {
|
|
grid = $("#ContainmentActions").data("kendoGrid");
|
|
grid.cancelRow();
|
|
}
|
|
|
|
function editContainmentRow(element) {
|
|
grid = $("#ContainmentActions").data("kendoGrid");
|
|
grid.editRow($(element).closest("tr"));
|
|
}
|
|
|
|
function updateContainmentRow() {
|
|
grid = $("#ContainmentActions").data("kendoGrid");
|
|
grid.saveRow();
|
|
}
|
|
|
|
function deleteContainmentRow(element) {
|
|
grid = $("#ContainmentActions").data("kendoGrid");
|
|
grid.removeRow($(element).closest("tr"));
|
|
}
|
|
|
|
//function createContainmentRow() {
|
|
// grid = $("#Lots").data("kendoGrid");
|
|
// grid.addRow();
|
|
//}
|
|
|
|
|
|
|
|
// RegionDispositionType
|
|
|
|
|
|
function onDispositionEdit(e) {
|
|
//on row edit replace the Delete and Edit buttons with Update and Cancel
|
|
$(e.container).find("td:last").html("<a href='javascript: void(0)' class='abutton update' onclick='updateDispositionRow()' title='button update'>button update</a> " +
|
|
"<a href='javascript: void(0)' class='abutton cancel' onclick='cancelDispositionRow()' title='button cancel'>button cancel</a>");
|
|
}
|
|
|
|
$('#addDispositionNotes').click(function (e) {
|
|
grid = $("#Dispositions").data("kendoGrid");
|
|
grid.addRow();
|
|
});
|
|
|
|
function cancelDispositionRow() {
|
|
grid = $("#Dispositions").data("kendoGrid");
|
|
grid.cancelRow();
|
|
}
|
|
|
|
function editDispositionRow(element) {
|
|
//alert(element.DispoistionType);
|
|
//var x = e.container.find("input[name=DispositionType]").data("kendoNumericTextBox").value()
|
|
//alert(x);
|
|
//return false;
|
|
grid = $("#Dispositions").data("kendoGrid");
|
|
grid.editRow($(element).closest("tr"));
|
|
|
|
}
|
|
|
|
function updateDispositionRow() {
|
|
grid = $("#Dispositions").data("kendoGrid");
|
|
grid.saveRow();
|
|
}
|
|
|
|
function deleteDispositionRow(element) {
|
|
grid = $("#Dispositions").data("kendoGrid");
|
|
}
|
|
|
|
$('#addMRBFlagAndHoldToSPN').click(function (e) {
|
|
//alert("Not implemented yet.")
|
|
|
|
if (confirm('Are you sure you want to send the MRB Flag to SPN')) {
|
|
$('#pleaseWaitDialog').modal('show');
|
|
$.ajax({
|
|
url: "/MRB/SendMRBHoldFlagToSPN",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
mrbNumber: $("#txtMRBNumber").val()
|
|
},
|
|
success: function (data) {
|
|
$('#pleaseWaitDialog').modal('hide');
|
|
if (data.Error) {
|
|
alert(data.Message);
|
|
}
|
|
},
|
|
error: function (data) {
|
|
alert("Failed ");
|
|
$('#pleaseWaitDialog').modal('hide');
|
|
}
|
|
|
|
});
|
|
}
|
|
return false
|
|
});
|
|
|
|
|
|
$("#ApproveDocument").on('click', function () {
|
|
$('#ApproveDocument').attr("disabled", true);
|
|
var message = '';
|
|
|
|
var mrbNumber = $("#txtMRBNumber").val();
|
|
var mrbRaisedAreaID = $("#MRBRaisedAreaID").data("kendoDropDownList").value();
|
|
var owner = $("#OwnerID").data("kendoDropDownList").value();
|
|
var tool = $("#txtTool").val();
|
|
var toolCSV = $("#ToolCSV").data("kendoMultiSelect").value().join(",");
|
|
var numberOfLotsAffected = $("#txtNumberOfLotsAffected").val();
|
|
var moduleIDs = $("#ModuleIds").data("kendoMultiSelect").value();
|
|
var process = $("#txtProcess").val();
|
|
var CANo = $("#CANo").val();
|
|
var partGroupIDs = $("#PartGroupIDs").data("kendoMultiSelect").value();
|
|
var numberOfWafersAffected = $("#txtNumberOfWafersAffected").val();
|
|
var numberOfDiesAffected = $("#txtNumberOfDiesAffected").val();
|
|
var issueDescription = $("#txtIssueDescription").val();
|
|
var notes = $("#txtNotes").val();
|
|
|
|
var issueDetectedDate = $("#txtIssueDetectedDate").val();
|
|
var issueStartDate = $("#txtIssueStartDate").val();
|
|
var issueEndDate = $("#txtIssueEndDate").val();
|
|
|
|
var riskAssessmentIDs = $("#RiskAssessmentIDs").data("kendoMultiSelect").value();
|
|
//var dispositionIDs = $("#DispositionIDs").data("kendoMultiSelect").value();
|
|
|
|
var ownerApprover = $("#OwnerApprover").val();
|
|
var peApprover = $("#PEApprover").val();
|
|
var mfgEngineeringAppover = $("#MfgEngineeringAppover").val();
|
|
var otherApprovers = $("#OtherApprovers").val();
|
|
var yeApprover = $("#YEApprover").val();
|
|
var qualityApprovers = $("#QualityApprovers").val();
|
|
var detailsFolder = $("#txtDetailsFolder").val();
|
|
var title = $("#txtTitle").val();
|
|
|
|
|
|
|
|
|
|
if (tool.length <= 0)
|
|
message += 'Tool, ';
|
|
|
|
if (numberOfLotsAffected.length <= 0)
|
|
message += 'Number of Lots Affected, ';
|
|
|
|
if (issueDescription.length <= 0)
|
|
message += 'Issue Description, ';
|
|
|
|
//if (mrbRaisedDate.length <= 0)
|
|
// message += 'MRB RaisedDate, ';
|
|
|
|
if (moduleIDs.length <= 0)
|
|
message += 'Module, ';
|
|
|
|
if (process.length <= 0)
|
|
message += 'Process, ';
|
|
|
|
if (mrbRaisedAreaID.length <= 0)
|
|
message += 'MRB Raised Area, ';
|
|
|
|
if (partGroupIDs.length <= 0)
|
|
message += 'Part Groups Affected, ';
|
|
|
|
if (issueDetectedDate.length <= 0)
|
|
message += 'Issue Detected Date, ';
|
|
|
|
if (issueStartDate.length <= 0)
|
|
message += 'Issue Started Date, ';
|
|
|
|
if (riskAssessmentIDs.length <= 0)
|
|
message += 'Risk Assessment, '
|
|
|
|
var customerImpacted;
|
|
if ($('#CustomerImpacted').is(':checked'))
|
|
customerImpacted = 1;
|
|
else
|
|
customerImpacted = 0;
|
|
|
|
//if (message != '') {
|
|
// alert(message + 'needs to be entered before submitting the document ');
|
|
// $('#SubmitDocument').attr("disabled", false);
|
|
// return false;
|
|
//}
|
|
|
|
var vgrid = $("#Lots").data("kendoGrid");
|
|
//Getting grid items
|
|
var items = vgrid.dataSource.data();
|
|
if (items.length == 0) {
|
|
alert('There are no lots for this MRB, Please enter at least one lot before Approval');
|
|
$('#ApproveDocument').attr("disabled", false);
|
|
return false;
|
|
}
|
|
if (message != '') {
|
|
alert(message + 'needs to be entered before approving the document');
|
|
$('#ApproveDocument').attr("disabled", false);
|
|
return false;
|
|
}
|
|
else { // save the form if anything was changed
|
|
$.ajax({
|
|
url: '/MRB/Edit',
|
|
type: "POST",
|
|
//dataType: "text",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(
|
|
{
|
|
MRBNumber: mrbNumber,
|
|
MRBRaisedAreaID: mrbRaisedAreaID,
|
|
Owner: owner,
|
|
Tool: tool,
|
|
NumberOfLotsAffected: numberOfLotsAffected,
|
|
ModuleIDs: moduleIDs,
|
|
Process: process,
|
|
CANo: CANo,
|
|
PartGroupIDs: partGroupIDs,
|
|
NumberOfWafersAffected: numberOfWafersAffected,
|
|
NumberOfDiesAffected: numberOfDiesAffected,
|
|
IssueDescription: issueDescription,
|
|
Notes: notes,
|
|
IssueDetectedDate: issueDetectedDate,
|
|
IssueStartDate: issueStartDate,
|
|
IssueEndDate: issueEndDate,
|
|
RiskAssessmentIDs: riskAssessmentIDs,
|
|
//DispositionIDs: dispositionIDs,
|
|
OwnerApprover: ownerApprover,
|
|
PEApprover: peApprover,
|
|
MfgEngineeringAppover: mfgEngineeringAppover,
|
|
OtherApprovers: otherApprovers,
|
|
YEApprover: yeApprover,
|
|
QualityApprovers: qualityApprovers,
|
|
Title: title,
|
|
DetailsFolder: detailsFolder,
|
|
CustomerImpacted: customerImpacted,
|
|
ToolCSV: toolCSV
|
|
}),
|
|
success: function (result) {
|
|
|
|
$("#ApprovalComments").modal('show');
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
|
|
alert("Save Failed " + jqXHR.responseText);
|
|
|
|
}
|
|
});
|
|
|
|
}
|
|
})
|
|
|
|
//var submitForApproval = function () {
|
|
|
|
// $("#ApprovalComments").modal('show');
|
|
// return false;
|
|
|
|
//}
|
|
|
|
$('#submitApprovalComments').on('click', function () {
|
|
$('#submitApprovalComments').attr("disabled", true);
|
|
$.ajax({
|
|
url: "/MRB/Approve",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
issueID: $("#txtMRBNumber").val(),
|
|
currentStep: $("#currentStep").val(),
|
|
comments: $("#approvalComments").val()
|
|
},
|
|
success: function (data) {
|
|
$("#ApprovalComments").modal('hide');
|
|
var url = '@Url.Action("Edit", "MRB", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', $("#txtMRBNumber").val());
|
|
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
$('#setDispoType').on('click', function () {
|
|
if (confirm("Are you sure you want to set all the lots to this Dispo Type?")) {
|
|
var dispo = $("#DispoTypes").data("kendoDropDownList").value();
|
|
$.ajax({
|
|
url: "/MRB/SetDispositionTypeForAllLots",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
mrb: $("#txtMRBNumber").val(),
|
|
dispoType: dispo
|
|
},
|
|
success: function (data) {
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
})
|
|
|
|
|
|
$("#btnDetailFolder").on('click', function (e) {
|
|
e.preventDefault();
|
|
var title = $("#txtTitle").val();
|
|
var detailsfolder = $("#txtDetailsFolder").val();
|
|
|
|
|
|
window.open("file:////temsdv002.infineon.com/FAB_Engineering/01_Other/FAB Excursions/" + detailsfolder + "/" + title, target = '_blank');
|
|
return false;
|
|
})
|
|
|
|
function buildMRBLinks(MRBs)
|
|
{
|
|
var template = "";
|
|
if (MRBs != null) {
|
|
var tempValue = MRBs.split(',');
|
|
var mrb = "";
|
|
var MRB_Dispo = ""
|
|
for (var i = 0; i < tempValue.length; i++) {
|
|
mrb = "";
|
|
if (tempValue[i] != '') {
|
|
MRB_Dispo = tempValue[i].split('_');
|
|
mrb = MRB_Dispo[0];
|
|
}
|
|
|
|
template += "<a href='/MRB/Edit?IssueID=" + mrb + "'>" + tempValue[i] + "</a>" + ", ";
|
|
}
|
|
}
|
|
return template.replace(/,(\s+)?$/, '');
|
|
}
|
|
|
|
function buildLDLinks(LotDispositionsLinkedToLot)
|
|
{
|
|
//alert(connection);
|
|
var template = "";
|
|
if (LotDispositionsLinkedToLot != null) {
|
|
var tempValue = LotDispositionsLinkedToLot.split(',');
|
|
for (var i = 0; i < tempValue.length; i++) {
|
|
|
|
@*if (connection == 'PROD') {
|
|
template += "<a href='http://temapprovalsystem.irf.com/LotDisposition/Edit?IssueID=" + tempValue[i] + "'>" + tempValue[i] + "</a>" + ", ";
|
|
}
|
|
else {
|
|
template += "<a href='@GlobalVars.hostURL" + "LotDisposition/Edit?IssueID=" + tempValue[i] + "'>" + tempValue[i] + "</a>" + ", ";
|
|
}*@
|
|
|
|
template += "<a href='/LotDisposition/Edit?IssueID=" + tempValue[i] + "'>" + tempValue[i] + "</a>" + ", ";
|
|
}
|
|
|
|
}
|
|
//alert(template);
|
|
return template.replace(/,(\s+)?$/, '');
|
|
}
|
|
|
|
$("#lotAddFormButton").on('click', function () {
|
|
$("#LotAddForm").modal('show');
|
|
return false;
|
|
})
|
|
|
|
$("#lotExport").on('click', function () {
|
|
var url = '@Url.Action("ExportLots", new { mrbNumber = "__id__" })';
|
|
url = url.replace('__id__', $("#txtMRBNumber").val());
|
|
window.open(url, '_blank');
|
|
return false;
|
|
})
|
|
|
|
|
|
$("#ExportMRBHoldFlagReport").on('click', function () {
|
|
var url = '@Url.Action("ExportMRBHoldFlagReport", new { mrbNumber = "__id__" })';
|
|
url = url.replace('__id__', $("#txtMRBNumber").val());
|
|
window.open(url, '_blank');
|
|
return false;
|
|
})
|
|
|
|
|
|
$("#PreviewMRBHoldFlagTobeSentToSPN").on('click', function () {
|
|
var url = '@Url.Action("PreviewMRBHoldFlagTobeSentToSPN", new { mrbNumber = "__id__" })';
|
|
url = url.replace('__id__', $("#txtMRBNumber").val());
|
|
window.open(url, '_blank');
|
|
return false;
|
|
})
|
|
|
|
$("#submitLotAdd").on('click', function () {
|
|
|
|
$.ajax({
|
|
url: '/MRB/AddLot',
|
|
type: "Post",
|
|
dataType: "json",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(
|
|
{
|
|
MRBNumber: $("#txtMRBNumber").val(),
|
|
LotNumber: $("#LotNumber").val(),
|
|
DieLotNumber: $("#LotNumber").val(),
|
|
Description: $("#Description").val(),
|
|
NewPartNo: $("#NewPartNo").val(),
|
|
WipPartNo: $("#WipPartNo").val(),
|
|
DiePartNo: $("#DiePartNo").val(),
|
|
ProductFamily: $("#ProductFamily").val(),
|
|
Gen: $("#Gen").val(),
|
|
Channel: $("#Channel").val(),
|
|
Hexsize: $("#Hexsize").val(),
|
|
Voltage: $("#Voltage").val(),
|
|
WaferCount: $("#WaferCount").val(),
|
|
DieCount: $("#DieCount").val(),
|
|
Location: $("#Location").val(),
|
|
TotalCost: $("#TotalCost").val(),
|
|
DispoType: $("#DispoType").val(),
|
|
Status: $("Status").val()
|
|
|
|
}),
|
|
success: function (result) {
|
|
if (result.OpenIssueWithExistingLots != 0) {
|
|
alert('The following Lot Number ' + data.LotNumber + ' cannot be added because it belongs to the following Open Lot Dispo ' + result.OpenIssueWithExistingLots);
|
|
}
|
|
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
$("#LotAddForm").modal('hide');
|
|
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
alert("Failed " + errorThrown);
|
|
|
|
}
|
|
});
|
|
return false;
|
|
})
|
|
|
|
|
|
$('#lotDeleteAllButton').on('click', function DeleteAllLots() {
|
|
|
|
if (confirm("Are you sure you want to DELETE ALL the Lots?")) {
|
|
|
|
$.ajax({
|
|
url: "/MRB/DeleteAllMRBLots",
|
|
type: "POST",
|
|
datatype: "json",
|
|
data: {
|
|
issueID: $("#txtMRBNumber").val()
|
|
},
|
|
success: function (data) {
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read($('#txtMRBNumber').val());
|
|
|
|
$('#txtNumberOfLotsAffected').val(0);
|
|
$('#txtNumberOfWafersAffected').val(0);
|
|
$('#txtNumberOfDiesAffected').val(0);
|
|
}
|
|
,
|
|
error: function (result) {
|
|
alert("Operation Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
|
|
return false;
|
|
|
|
})
|
|
|
|
//$('#SendMRBSPNFlag').on('click', function () {
|
|
// if (confirm('Are you sure you want to send the MRB Flag to SPN')) {
|
|
// $('#pleaseWaitDialog').modal('show');
|
|
// $.ajax({
|
|
// url: "/MRB/SendSPN_MRB_HoldFlag",
|
|
// type: "GET",
|
|
// datatype: "json",
|
|
// data: {
|
|
// mrbNumber: $("#txtMRBNumber").val()
|
|
// },
|
|
// success: function (data) {
|
|
// $('#pleaseWaitDialog').modal('hide');
|
|
// if (data.Error) {
|
|
// alert(data.Message);
|
|
// }
|
|
// },
|
|
// error: function () {
|
|
// alert("Failed ");
|
|
// $('#pleaseWaitDialog').modal('hide');
|
|
// }
|
|
|
|
// });
|
|
// }
|
|
// return false
|
|
//});
|
|
|
|
|
|
function DispositionOnUpdate(e) {
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
//alert(dataItem);
|
|
}
|
|
|
|
function DownloadAttachment(e) {
|
|
e.preventDefault();
|
|
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
var fileName = dataItem.FileName;
|
|
var attachmentID = dataItem.AttachmentID;
|
|
|
|
window.location = '/MRB/DownloadFile?attachmentID=' + attachmentID;
|
|
|
|
|
|
}
|
|
|
|
|
|
(function ($, kendo) {
|
|
$.extend(true, kendo.ui.validator, {
|
|
rules: { // custom rules
|
|
dispotypevalidation: function (input, params) {
|
|
//check for the rule attribute
|
|
if (input.filter("[data-val-dispotypevalidation]").length && input.val()) {
|
|
return /^[A,B,C,D,E,F,G,H,I]/.test(input.val());
|
|
}
|
|
return true;
|
|
}
|
|
},
|
|
messages: { //custom rules messages
|
|
dispotypevalidation: function (input) {
|
|
// return the message text
|
|
return input.attr("data-val-dispotypevalidation");
|
|
}
|
|
}
|
|
});
|
|
})(jQuery, kendo);
|
|
|
|
|
|
|
|
$("#AddContainmentActionItem").on('click', function (e) {
|
|
|
|
clearContainmentActionForm();
|
|
containmentActionOperation = 'Add';
|
|
$("#ContainmentActionForm").modal("show");
|
|
})
|
|
|
|
|
|
function EditContainmentActionItem(e) {
|
|
var ecdDate;
|
|
var tempecdDate;
|
|
|
|
var implementDate;
|
|
var tempimplementDate;
|
|
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
containmentActionItemID = dataItem.ContainmentActionID;
|
|
var containmentAction = dataItem.ContainmentAction;
|
|
var ResponsibilityOwnerID = dataItem.ResponsibilityOwnerID;
|
|
var ecd = dataItem.ECD;
|
|
currResponsibilityOwnerID = dataItem.CurrentResponsibilityOwnerID;
|
|
|
|
|
|
if (dataItem.ECD != null) {
|
|
tempecdDate = new Date(dataItem.ECD);
|
|
ecdDate = (tempecdDate.getMonth() + 1) + '/' + tempecdDate.getDate() + '/' + tempecdDate.getFullYear();
|
|
}
|
|
else
|
|
ecdDate = '';
|
|
|
|
if (dataItem.ImplementedDate != null) {
|
|
tempimplementDate = new Date(dataItem.ImplementedDate);
|
|
implementDate = (tempimplementDate.getMonth() + 1) + '/' + tempimplementDate.getDate() + '/' + tempimplementDate.getFullYear();
|
|
}
|
|
else
|
|
implementDate = '';
|
|
|
|
|
|
containmentActionOperation = 'Edit';
|
|
clearContainmentActionForm();
|
|
|
|
$("#txtContainmentAction").val(containmentAction);
|
|
$("#ResponsibilityOwnerIds").data("kendoDropDownList").value(ResponsibilityOwnerID);
|
|
$("#txtECD").val(ecdDate);
|
|
$("#txtImplementedDate").val(implementDate);
|
|
|
|
|
|
var tempImpIDs;
|
|
var data;
|
|
var dataArray;
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
$("#ContainmentActionForm").modal("show");
|
|
|
|
|
|
}
|
|
|
|
|
|
$("#SaveContainmentAction").on('click', function () {
|
|
|
|
var objectData = ReturnContainmentActionObject();
|
|
|
|
if (objectData.ResponsibilityOwnerID != '' && objectData.ECD == '') {
|
|
alert('Please enter the ECD while entering the Responsible Owner');
|
|
return false;
|
|
}
|
|
|
|
var url = "";
|
|
|
|
|
|
if (containmentActionOperation == 'Add') {
|
|
url = "/MRB/InsertContainmentAction";
|
|
}
|
|
else {
|
|
url = "/MRB/UpdateContainmentAction";
|
|
}
|
|
|
|
$.ajax({
|
|
url: url,
|
|
type: "POST",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(objectData),
|
|
success: function (objdata) {
|
|
var grid = $("#ContainmentActions").data("kendoGrid");
|
|
grid.dataSource.read($("@Model.MRBNumber").val());
|
|
$("#ContainmentActionForm").modal("hide");
|
|
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
//$("#CAFindingsForm").modal("hide");
|
|
}
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
function ReturnContainmentActionObject() {
|
|
|
|
|
|
if (containmentActionOperation == 'Add') {
|
|
var objectData = {
|
|
ID: 0,
|
|
MRBNumber: '@Model.MRBNumber',
|
|
ContainmentAction: $("#txtContainmentAction").val(),
|
|
ECD: $("#txtECD").val(),
|
|
ImplementedDate: $("#txtImplementedDate").val(),
|
|
ResponsibilityOwnerID: $("#ResponsibilityOwnerIds").data("kendoDropDownList").value()
|
|
}
|
|
|
|
}
|
|
else {
|
|
var objectData = {
|
|
ContainmentActionID: containmentActionItemID,
|
|
AuditNo: '@Model.MRBNumber',
|
|
ContainmentAction: $("#txtContainmentAction").val(),
|
|
ECD: $("#txtECD").val(),
|
|
ImplementedDate: $("#txtImplementedDate").val(),
|
|
ResponsibilityOwnerID: $("#ResponsibilityOwnerIds").data("kendoDropDownList").value()
|
|
}
|
|
}
|
|
|
|
return objectData;
|
|
}
|
|
|
|
|
|
function clearContainmentActionForm() {
|
|
$("#txtContainmentAction").val('');
|
|
$("#ResponsibilityOwnerIds").data("kendoDropDownList").value(0);
|
|
$("#txtECD").val('');
|
|
$("#txtImplementedDate").val('');
|
|
|
|
}
|
|
|
|
|
|
function UpdateMRBLotError(e) {
|
|
alert('Problem occured during the MRBLot update');
|
|
}
|
|
|
|
function IssueStartTimeChangeAlert() {
|
|
//kendoConsole.log("Change :: " + kendo.toString(this.value(), 'g'));
|
|
|
|
if ($("#txtIssueStartDate").val() != '')
|
|
alert("Please ensure to pick the right time also");
|
|
|
|
//$("#txtIssueStartDate").kendoDateTimePicker({
|
|
// format: "MM/dd/yyyy" //format is used to format the value of the widget and to parse the input.
|
|
//});
|
|
|
|
//var date = this.value();
|
|
//alert(date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear());
|
|
//this.value = date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear();
|
|
}
|
|
|
|
|
|
function IssueEndTimeChangeAlert() {
|
|
|
|
if ($("#txtIssueEndDate").val() != '')
|
|
alert("Please ensure to pick the time also");
|
|
}
|
|
|
|
</script>
|
|
|