prevent overlap of additional fields on vehicle level vs record level.
This commit is contained in:
@@ -97,13 +97,14 @@ namespace CarCareTracker.Controllers
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult AddVehiclePartialView()
|
public IActionResult AddVehiclePartialView()
|
||||||
{
|
{
|
||||||
return PartialView("_VehicleModal", new Vehicle());
|
return PartialView("_VehicleModal", new Vehicle() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields });
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetEditVehiclePartialViewById(int vehicleId)
|
public IActionResult GetEditVehiclePartialViewById(int vehicleId)
|
||||||
{
|
{
|
||||||
var data = _dataAccess.GetVehicleById(vehicleId);
|
var data = _dataAccess.GetVehicleById(vehicleId);
|
||||||
|
data.ExtraFields = StaticHelper.AddExtraFields(data.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields);
|
||||||
return PartialView("_VehicleModal", data);
|
return PartialView("_VehicleModal", data);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
SupplyRecord = 7,
|
SupplyRecord = 7,
|
||||||
Dashboard = 8,
|
Dashboard = 8,
|
||||||
PlanRecord = 9,
|
PlanRecord = 9,
|
||||||
OdometerRecord = 10
|
OdometerRecord = 10,
|
||||||
|
VehicleRecord = 11
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
public string LicensePlate { get; set; }
|
public string LicensePlate { get; set; }
|
||||||
public bool IsElectric { get; set; } = false;
|
public bool IsElectric { get; set; } = false;
|
||||||
public bool UseHours { get; set; } = false;
|
public bool UseHours { get; set; } = false;
|
||||||
|
public List<ExtraField> ExtraFields { get; set; } = new List<ExtraField>();
|
||||||
public List<string> Tags { get; set; } = new List<string>();
|
public List<string> Tags { get; set; } = new List<string>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
<!option @(Model.Id == (int)ImportMode.SupplyRecord ? "selected" : "") value="@((int)ImportMode.SupplyRecord)">@translator.Translate(userLanguage, "Supplies")</!option>
|
<!option @(Model.Id == (int)ImportMode.SupplyRecord ? "selected" : "") value="@((int)ImportMode.SupplyRecord)">@translator.Translate(userLanguage, "Supplies")</!option>
|
||||||
<!option @(Model.Id == (int)ImportMode.PlanRecord ? "selected" : "") value="@((int)ImportMode.PlanRecord)">@translator.Translate(userLanguage, "Planner")</!option>
|
<!option @(Model.Id == (int)ImportMode.PlanRecord ? "selected" : "") value="@((int)ImportMode.PlanRecord)">@translator.Translate(userLanguage, "Planner")</!option>
|
||||||
<!option @(Model.Id == (int)ImportMode.OdometerRecord ? "selected" : "") value="@((int)ImportMode.OdometerRecord)">@translator.Translate(userLanguage, "Odometer")</!option>
|
<!option @(Model.Id == (int)ImportMode.OdometerRecord ? "selected" : "") value="@((int)ImportMode.OdometerRecord)">@translator.Translate(userLanguage, "Odometer")</!option>
|
||||||
|
<!option @(Model.Id == (int)ImportMode.VehicleRecord ? "selected" : "") value="@((int)ImportMode.VehicleRecord)">@translator.Translate(userLanguage, "Vehicle")</!option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -49,6 +49,14 @@
|
|||||||
<!option value="@tag">@tag</!option>
|
<!option value="@tag">@tag</!option>
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
|
@foreach (ExtraField field in Model.ExtraFields)
|
||||||
|
{
|
||||||
|
var elementId = Guid.NewGuid();
|
||||||
|
<div class="extra-field">
|
||||||
|
<label for="@elementId">@field.Name</label>
|
||||||
|
<input type="text" id="@elementId" class="form-control @(field.IsRequired ? "extra-field-required" : "")" placeholder="@field.Name" value="@field.Value">
|
||||||
|
</div>
|
||||||
|
}
|
||||||
@if (!string.IsNullOrWhiteSpace(Model.ImageLocation))
|
@if (!string.IsNullOrWhiteSpace(Model.ImageLocation))
|
||||||
{
|
{
|
||||||
<label for="inputImage">@translator.Translate(userLanguage, "Replace picture(optional)")</label>
|
<label for="inputImage">@translator.Translate(userLanguage, "Replace picture(optional)")</label>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -40,8 +40,12 @@ function saveVehicle(isEdit) {
|
|||||||
var vehicleLicensePlate = $("#inputLicensePlate").val();
|
var vehicleLicensePlate = $("#inputLicensePlate").val();
|
||||||
var vehicleIsElectric = $("#inputIsElectric").is(":checked");
|
var vehicleIsElectric = $("#inputIsElectric").is(":checked");
|
||||||
var vehicleUseHours = $("#inputUseHours").is(":checked");
|
var vehicleUseHours = $("#inputUseHours").is(":checked");
|
||||||
|
var extraFields = getAndValidateExtraFields(true);
|
||||||
//validate
|
//validate
|
||||||
var hasError = false;
|
var hasError = false;
|
||||||
|
if (extraFields.hasError) {
|
||||||
|
hasError = true;
|
||||||
|
}
|
||||||
if (vehicleYear.trim() == '' || parseInt(vehicleYear) < 1900) {
|
if (vehicleYear.trim() == '' || parseInt(vehicleYear) < 1900) {
|
||||||
hasError = true;
|
hasError = true;
|
||||||
$("#inputYear").addClass("is-invalid");
|
$("#inputYear").addClass("is-invalid");
|
||||||
@@ -78,7 +82,8 @@ function saveVehicle(isEdit) {
|
|||||||
licensePlate: vehicleLicensePlate,
|
licensePlate: vehicleLicensePlate,
|
||||||
isElectric: vehicleIsElectric,
|
isElectric: vehicleIsElectric,
|
||||||
tags: vehicleTags,
|
tags: vehicleTags,
|
||||||
useHours: vehicleUseHours
|
useHours: vehicleUseHours,
|
||||||
|
extraFields: extraFields.extraFields
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
if (data) {
|
if (data) {
|
||||||
if (!isEdit) {
|
if (!isEdit) {
|
||||||
@@ -398,10 +403,11 @@ function showBulkImportModal(mode) {
|
|||||||
function hideBulkImportModal() {
|
function hideBulkImportModal() {
|
||||||
$("#bulkImportModal").modal('hide');
|
$("#bulkImportModal").modal('hide');
|
||||||
}
|
}
|
||||||
function getAndValidateExtraFields() {
|
function getAndValidateExtraFields(isVehicle) {
|
||||||
var hasError = false;
|
var hasError = false;
|
||||||
var outputData = [];
|
var outputData = [];
|
||||||
$(".extra-field").map((index, elem) => {
|
var fieldName = isVehicle ? '#addVehicleModalContent .extra-field,#editVehicleModalContent .extra-field' : '.extra-field:not(#addVehicleModalContent .extra-field, #editVehicleModalContent .extra-field)';
|
||||||
|
$(`${fieldName}`).map((index, elem) => {
|
||||||
var extraFieldName = $(elem).children("label").text();
|
var extraFieldName = $(elem).children("label").text();
|
||||||
var extraFieldInput = $(elem).children("input");
|
var extraFieldInput = $(elem).children("input");
|
||||||
var extraFieldValue = extraFieldInput.val();
|
var extraFieldValue = extraFieldInput.val();
|
||||||
|
|||||||
Reference in New Issue
Block a user