';
table += '
';
table += '
';
table += buildTable(encLayoutX, encLayoutY, 'enclosureTable', true);
table += '
';
table += '
';
// Clear the preview object of any user formatting
$(variables['obj']).removeClass(function(index, css) {
return (css.match(/(^|\s)category\S+/g) || []).join(' ');
});
expandRackUnit(RUSize);
setObjectSize();
$(variables['obj']).html(table);
$(variables['obj'])
.find('.tableRow:first')
.find('.tableCol:first')
.html('
');
}
$( document ).ready(function() {
var scrollLockState = $('#checkboxScrollLock').is(':checked');
if(scrollLockState) {
var scrollLockSetting = 'locked';
} else {
var scrollLockSetting = 'unlocked';
}
$('#scrollState').html(scrollLockSetting);
handleScrollLock();
toggleObjectTypeDependencies();
$('#containerTemplateCatalog').load('/backend/retrieve_template-catalog.php', function(){
initializeTemplateCatalog();
});
$('#templateFilter').on('itemAdded', function(event){
var containerElement = $('#availableObjects');
var inputElement = $('#templateFilter');
var categoryContainers = $(containerElement).find('.categoryContainerEntire');
filterTemplates(containerElement, inputElement, categoryContainers);
}).on('itemRemoved', function(event){
var containerElement = $('#availableObjects');
var inputElement = $('#templateFilter');
var categoryContainers = $(containerElement).find('.categoryContainerEntire');
filterTemplates(containerElement, inputElement, categoryContainers);
});
//X-editable buttons style
$.fn.editableform.buttons =
'
' +
'
';
var defaultCategoryColor = '#d3d3d3';
makeRackObjectsClickable();
$(document).data('obj', $('#previewObj0'));
$(document).data('templateSide', 0);
$(document).data('availableTemplateSide', 0);
setObjectSize();
for(x=0; x<2; x++) {
buildObj(x, 24, 2, 'column');
}
setCategory();
$('#checkboxScrollLock').on('change', function(){
handleScrollLock();
});
// Clone a template to the workspace
$('#objClone').click(function(e){
e.preventDefault();
if($(this).hasClass('disabled')) {
return false;
}
var templateID = $('#selectedObjectID').val();
var templateSide = $(document).data('availableTemplateSide');
var templateObj = $('#availableContainer'+templateSide).find('.stockObj[data-template-id="'+templateID+'"]');
var templateName = $(templateObj).data('templateName');
var templateType = $(templateObj).data('templateType');
var templateFrontImage = $(templateObj).data('templateFrontImage');
var templateRearImage = $(templateObj).data('templateRearImage');
// Store template data
var RUSize = $(templateObj).data('ruSize');
var categoryID = $(templateObj).data('templateCategoryId');
var category = $(templateObj).data('templateCategoryName');
var face = $(templateObj).data('objectFace');
var templateFunction = $(templateObj).data('templateFunction');
var templateObjChild = $(templateObj).children()[0];
$('[name="objectTypeRadio"][value='+templateType+']').prop('checked', true);
$('[name="category"][value='+categoryID+']').prop('selected', true);
$('#inputName').val(templateName);
$('#inputFrontImage').val(templateFrontImage);
$('#inputRearImage').val(templateRearImage);
if(templateType == 'Insert') {
var parentHUnits = $(templateObj).data('parentHUnits');
var parentVUnits = $(templateObj).data('parentVUnits');
var parentEncLayoutX = $(templateObj).data('parentEncLayoutX');
var parentEncLayoutY = $(templateObj).data('parentEncLayoutY');
var nestedInsert = $(templateObj).data('nestedInsert');
var nestedParentHUnits = $(templateObj).data('nestedParentHUnits');
var nestedParentVUnits = $(templateObj).data('nestedParentVUnits');
var nestedParentEncLayoutX = $(templateObj).data('nestedParentEncLayoutX');
var nestedParentEncLayoutY = $(templateObj).data('nestedParentEncLayoutY');
$(document).data('nestedInsertParentHUnits', nestedParentHUnits);
$(document).data('nestedInsertParentVUnits', nestedParentVUnits);
$(document).data('nestedInsertParentEncLayoutX', nestedParentEncLayoutX);
$(document).data('nestedInsertParentEncLayoutY', nestedParentEncLayoutY);
buildInsertParent(RUSize, parentHUnits, parentVUnits, parentEncLayoutX, parentEncLayoutY, nestedInsert, nestedParentHUnits, nestedParentVUnits, nestedParentEncLayoutX, nestedParentEncLayoutY);
switchSides(3);
setCategory();
$('#previewObj3').html($(templateObjChild).clone());
var object = $('#previewObj3');
objFaceArray = [object];
} else {
switchSides(0);
for(x=0; x<2; x++) {
var flexUnits = RUSize * 2;
$('#previewObj'+x).data('vUnits', flexUnits);
$('#previewObj'+x).children('.flex-container-parent').data('vUnits', flexUnits);
}
// Clone template faces to workspace and save them for reference
var mountConfig = $(templateObj).data('objectMountConfig');
if(mountConfig == 0) {
$('#previewObj0').html($(templateObjChild).clone());
var object = $('#previewObj0');
objFaceArray = [object];
} else {
// Find the index of the opposite face
var faceOpposite = face == 0 ? 1 : 0;
// Store the opposite face
var templateObjOpposite = $('#availableContainer'+faceOpposite).find('.stockObj[data-template-id="'+templateID+'"]');
var templateObjOppositeChild = $(templateObjOpposite).children()[0];
// Clone front and rear to workspace
$('#previewObj'+face).html($(templateObjChild).clone());
$('#previewObj'+faceOpposite).html($(templateObjOppositeChild).clone());
var object = $('#previewObj'+face);
var objectOpposite = $('#previewObj'+faceOpposite);
objFaceArray = [object, objectOpposite];
}
}
// Apply template data
handleMountConfig(mountConfig);
$('#inputRU').val(RUSize);
$('#inputCategory').children('[value='+categoryID+']').prop('selected', true);
$('[name="objectFunction"][value='+templateFunction+']').prop('checked', true);
expandRackUnit(RUSize);
setObjectSize();
setCategory();
toggleObjectTypeDependencies();
togglePartitionTypeDependencies();
$.each(objFaceArray, function(){
$(this).find('.flex-container').addClass('border-black transparency-20');
$(this).find('.flex-container, .flex-container-parent').on('click', function(event){
event.stopPropagation();
makeTemplatePartitionClickable(this);
});
});
var variables = getVariables();
$(variables['selectedObj']).click();
});
// Delete a temlate
$('#confirmObjDelete').click(function(){
var templateCombined = $(document).data('selectedTemplateCombined');
if (templateCombined == 'yes') {
var templateID = $(document).data('selectedTemplateCombinedID');
var templateType = 'combined';
} else {
var templateID = $(document).data('selectedTemplateID');
var templateType = 'regular';
}
var data = {
'id': templateID,
'templateCombined': templateCombined,
'action': 'delete'
};
data = JSON.stringify(data);
$.post('backend/process_object-custom.php', {'data':data}, function(response){
var responseJSON = JSON.parse(response);
if (responseJSON.active == 'inactive'){
window.location.replace("/");
} else if ($(responseJSON.error).size() > 0){
displayError(responseJSON.error);
} else if (responseJSON.success != ''){
displaySuccess(responseJSON.success);
$('#availableContainer').find('.object'+templateID+'.'+templateType).remove();
resetTemplateDetails();
} else {
displayError(['Something went wrong.']);
}
});
});
// Start colorpicker
$('#color-picker').spectrum({
preferredFormat: 'hex',
showButtons: false,
showPaletteOnly: true,
showPalette: true,
color: defaultCategoryColor,
palette: [
[
'#d581d6',
'#d6819f',
'#d68d8d',
'#e59881',
'#d6d678',
'#a9a9a9'
],
[
'#95d681',
'#81d6a1',
'#81d6ce',
'#81bad6',
'#92b2d6',
'#d3d3d3'
]
],
change: function(color){
$('#color-picker').val(color);
}
}).val(defaultCategoryColor);
// Select category
$('#categoryList').children('button').on('click', function(){
if($(this).hasClass('rackObjSelected')) {
resetCategoryForm(defaultCategoryColor);
} else {
$('#categoryList').children('button').removeClass('rackObjSelected');
$(this).addClass('rackObjSelected');
$('#inputCategoryID').val($(this).data('id'));
$('#inputCategoryCurrentID').val($(this).data('id'));
$('#inputCategoryName').val($(this).data('name'));
$('#color-picker').spectrum('set', $(this).data('color'));
if($(this).data('default') == 1) {
$('#inputCategoryDefault').prop({'checked':true,'disabled':true});
} else {
$('#inputCategoryDefault').prop({'checked':false,'disabled':false});
}
}
});
// Delete selected categories
$('#manageCategories-Delete').on('click', function(){
var data = JSON.stringify($('#manageCategoriesCurrent-Form').serializeArray());
$.post('backend/process_object-category.php', {'data':data}, function(response){
var alertMsg = '';
var responseJSON = JSON.parse(response);
if (responseJSON.active == 'inactive'){
window.location.replace("/");
} else if ($(responseJSON.error).size() > 0){
$('#alertMsgCategory').empty();
$.each(responseJSON.error, function(index, errorTxt){
alertMsg += '
';
alertMsg += 'Oops! '+errorTxt;
alertMsg += '
';
$('#alertMsgCategory').append(alertMsg);
});
$("html, body").animate({ scrollTop: 0 }, "slow");
} else {
$('#categoryOption'+responseJSON.success).remove();
$('#categoryList'+responseJSON.success).remove();
resetCategoryForm(defaultCategoryColor);
alertMsg += '
';
alertMsg += 'Success! Category was deleted.';
alertMsg += '
';
$('#alertMsgCategory').html(alertMsg);
}
});
});
// Category Manager form save
$('#manageCategories-Save').on('click', function(event){
var defaultOptionProp = $('#inputCategoryDefault').prop('disabled');
if(defaultOptionProp) {
$('#inputCategoryDefault').prop('disabled', false);
}
var data = JSON.stringify($('#manageCategories-Form').serializeArray());
$('#inputCategoryDefault').prop('disabled', defaultOptionProp);
$.post('backend/process_object-category.php', {'data':data}, function(response){
var alertMsg = '';
var responseJSON = JSON.parse(response);
if (responseJSON.active == 'inactive'){
window.location.replace("/");
} else if ($(responseJSON.error).size() > 0){
$('#alertMsgCategory').empty();
$.each(responseJSON.error, function(index, errorTxt){
alertMsg += '
';
alertMsg += 'Oops! '+errorTxt;
alertMsg += '
';
$('#alertMsgCategory').append(alertMsg);
});
$("html, body").animate({ scrollTop: 0 }, "slow");
} else {
$("#customStyle").load('includes/content-custom_style.php');
if(responseJSON.success.defaultOption == 1) {
var currentDefault = $('#categoryList').children('button[data-default="1"]');
$(currentDefault).data('default', 0);
$(currentDefault).html($(currentDefault).data('name'));
}
if(responseJSON.success.action == 'add') {
$('#inputCategory').append('
');
var defaultIdentifier = responseJSON.success.defaultOption == 1 ? '*' : '';
$('#categoryList').append('
');
$('#categoryList').children().last().on('click', function(){
if($(this).hasClass('rackObjSelected')) {
resetCategoryForm(defaultCategoryColor);
} else {
$('#categoryList').children('button').removeClass('rackObjSelected');
$(this).addClass('rackObjSelected');
$('#inputCategoryID').val($(this).data('id'));
$('#inputCategoryCurrentID').val($(this).data('id'));
$('#inputCategoryName').val($(this).data('name'));
$('#color-picker').spectrum('set', $(this).data('color'));
if($(this).data('default') == 1) {
$('#inputCategoryDefault').prop({'checked':true,'disabled':true});
} else {
$('#inputCategoryDefault').prop({'checked':false,'disabled':false});
}
}
});
resetCategoryForm(defaultCategoryColor);
var successTxt = responseJSON.success;
var alertMsg = '';
alertMsg += '
';
alertMsg += 'Success! Category added.';
alertMsg += '
';
$('#alertMsgCategory').html(alertMsg);
} else {
// Update category select option
$('#categoryOption'+responseJSON.success.id).data('value', 'category'+responseJSON.success.name);
$('#categoryOption'+responseJSON.success.id).val(responseJSON.success.id);
$('#categoryOption'+responseJSON.success.id).html(responseJSON.success.name);
// Update category button
$('#categorList'+responseJSON.success.id).removeClass(function(index, className){
return (className.match (/(^|\s)category\S+/g) || []).join(' ');
});
$('#categoryList'+responseJSON.success.id).addClass('category'+responseJSON.success.name);
$('#categoryList'+responseJSON.success.id).data('name', responseJSON.success.name);
$('#categoryList'+responseJSON.success.id).data('color', responseJSON.success.color);
var defaultIdentifier = '';
if(responseJSON.success.defaultOption == 1) {
defaultIdentifier = '*';
}
$('#categoryList'+responseJSON.success.id).data('default', responseJSON.success.defaultOption);
$('#categoryList'+responseJSON.success.id).html(responseJSON.success.name+defaultIdentifier);
resetCategoryForm(defaultCategoryColor);
var alertMsg = '';
alertMsg += '
';
alertMsg += 'Success! Category updated.';
alertMsg += '
';
$('#alertMsgCategory').html(alertMsg);
}
}
});
});
// Form submit
$('#objectEditor-Submit').on('click', function(){
// Gather user input
var data = {};
data['action'] = "add";
data['name'] = $('#inputName').val();
data['category'] = $('#inputCategory').val();
data['type'] = $('input[name="objectTypeRadio"]:checked').val();
data['function'] = $('input[name="objectFunction"]:checked').val();
data['RUSize'] = $('#inputRU').val();
data['frontImage'] = $('#inputFrontImage').val();
data['rearImage'] = $('#inputRearImage').val();
data['objects'] = [];
if(data['type'] == 'Insert'){
var encLayoutX = parseInt($('#previewObj3').data('valueX'), 10);
var encLayoutY = parseInt($('#previewObj3').data('valueY'), 10);
var objHUnits = parseInt($('#previewObj3').data('hUnits'), 10);
var objVUnits = parseInt($('#previewObj3').data('vUnits'), 10);
data['encLayoutX'] = encLayoutX;
data['encLayoutY'] = encLayoutY;
data['hUnits'] = objHUnits;
data['vUnits'] = objVUnits;
data['nestedInsertParentHUnits'] = parseInt($(document).data('nestedInsertParentHUnits'), 10);
data['nestedInsertParentVUnits'] = parseInt($(document).data('nestedInsertParentVUnits'), 10);
data['nestedInsertParentEncLayoutX'] = parseInt($(document).data('nestedInsertParentEncLayoutX'), 10);
data['nestedInsertParentEncLayoutY'] = parseInt($(document).data('nestedInsertParentEncLayoutY'), 10);
data['objects'].push(buildObjectArray('#previewObj3'));
} else {
data['mountConfig'] = $('input[name="sideCount"]:checked').val();
for (var x=0; x<=data['mountConfig']; x++) {
data['objects'].push(buildObjectArray('#previewObj'+x));
}
}
// Convert to JSON string so it can be posted
data = JSON.stringify(data);
// Post user input
$.post('backend/process_object-custom.php', {'data':data}, function(response){
var responseJSON = JSON.parse(response);
if (responseJSON.active == 'inactive'){
window.location.replace("/");
} else if ($(responseJSON.error).size() > 0){
displayError(responseJSON.error);
} else {
location.reload();
}
});
});
// Category
$('#inputCategory').on('change', function(){
setCategory();
});
// Side Count Selector
$('.sideCount').on('change', function(){
switchSides(0);
var mountConfig = $(this).val();
handleMountConfig(mountConfig);
});
// Side Switcher
$('.sideSelector').on('change', function(){
var selectedSide = $(this).val();
switchSides(selectedSide);
setCategory();
setObjectSize();
setPartitionSizeInput();
setInputValues();
togglePartitionTypeDependencies();
handleOrientationInput();
});
// Detail Side Switcher
$('.sideSelectorDetail').on('change', function(){
switchSidesDetail($(this).val());
});
// RU Size
$('#inputRU').on('change', function(){
var variables = getVariables();
for(x=0; x<2; x++) {
var flexUnits = variables['RUSize'] * 2;
$('#previewObj'+x).data('vUnits', flexUnits);
$('#previewObj'+x).children('.flex-container-parent').data('vUnits', flexUnits);
}
expandRackUnit(variables['RUSize']);
setObjectSize();
setPartitionSizeInput();
setInputValues();
handleOrientationInput();
});
// Object Type
$('input.objectType').on('change', function(){
var category = $('#inputCategory').find('option:selected').data('value');
$('inputFrontImage').val('');
$('inputRearImage').val('');
toggleObjectTypeDependencies();
switch($(this).val()) {
case 'Insert':
// Inserts cannot be 4-post mountable
$('.sideSelector').prop('disabled', true);
$('#inputSideCount2Post').prop('checked', true);
$('#sideSelectorFront').prop('checked', true);
switchSides(3);
// Variables must be retrieved after switchSides() because it updates the reference to the currently selected object
var variables = getVariables();
// Disable relevant input fields
$('#partitionH, #partitionV, #inputPartitionTypeGeneric, #inputPartitionTypeConnectable, #inputPartitionTypeEnclosure, #customPartitionAdd, #customPartitionRemove, #objectPartitionSize, #objectMediaType, #objectPortType, #objectPortOrientation, #objectPortLayout').prop('disabled', true);
// Clear the preview object of any user formatting
$('#previewObj0').html('Select enclosure from "Available Objects" section.');
$('#previewObj0').removeClass(function(index, css) {
return (css.match(/(^|\s)category\S+/g) || []).join(' ');
});
$('.enclosure').on('click', function(){
switchSides(0);
var enclosureParent = $(this).parent();
var enclosureObject = $(this).closest('.flex-container-parent');
var enclosureObjectParent = $(enclosureObject).parent();
var objectFlexDirection = $(enclosureObjectParent).css('flex-direction');
var objectFunction = $(enclosureObjectParent).data('templateFunction');
var objectType = $(enclosureObjectParent).data('templateType');
if(objectType == 'Insert') {
var nestedInsert = true;
var parentHUnits = parseInt($(enclosureObjectParent).data('parentHUnits'), 10);
var parentVUnits = parseInt($(enclosureObjectParent).data('parentVUnits'), 10);
var parentEncLayoutX = parseInt($(enclosureObjectParent).data('parentEncLayoutX'), 10);
var parentEncLayoutY = parseInt($(enclosureObjectParent).data('parentEncLayoutY'), 10);
} else {
var nestedInsert = false;
var parentHUnits = 0;
var parentVUnits = 0;
var parentEncLayoutX = 0;
var parentEncLayoutY = 0;
}
$(document).data('nestedInsertParentHUnits', parentHUnits);
$(document).data('nestedInsertParentVUnits', parentVUnits);
$(document).data('nestedInsertParentEncLayoutX', parentEncLayoutX);
$(document).data('nestedInsertParentEncLayoutY', parentEncLayoutY);
var hUnits = parseInt($(enclosureParent).data('hUnits'), 10);
var vUnits = parseInt($(enclosureParent).data('vUnits'), 10);
var encLayoutX = parseInt($(enclosureParent).data('valueX'), 10);
var encLayoutY = parseInt($(enclosureParent).data('valueY'), 10);
$('[name="objectFunction"][value='+objectFunction+']').prop('checked', true);
var RUSize = parseInt($(enclosureObjectParent).data('ruSize'), 10);
$('#inputRU').val(RUSize);
// Enable input fields
$('#partitionH, #partitionV, #inputPartitionTypeGeneric, #inputPartitionTypeConnectable, #objectType, #objectMediaType, #objectPortType, #objectPortOrientation, #objectPortLayout').prop('disabled', false);
buildInsertParent(RUSize, hUnits, vUnits, encLayoutX, encLayoutY, nestedInsert, parentHUnits, parentVUnits, parentEncLayoutX, parentEncLayoutY);
$(document).data('templateSide', 3);
buildObj(3, hUnits, vUnits, objectFlexDirection);
setCategory();
togglePartitionTypeDependencies();
handleOrientationInput();
});
break;
case 'Standard':
switchSides(0);
// Variables must be retrieved here... see above comment under 'Insert' case
var variables = getVariables();
$('#inputPartitionTypeGeneric, #inputPartitionTypeConnectable, #inputPartitionTypeEnclosure').prop('disabled', false);
for(x=0; x<2; x++) {
buildObj(x, 24, 2, 'column');
}
$(document).data('templateSide', 0);
expandRackUnit(variables['RUSize']);
setObjectSize();
setCategory();
handleOrientationInput();
// Remove the click hook from enclosure elements
// that were added when selecting 'insert' object type.
$('.enclosure').off('click');
break;
}
});
// Object Function
$('input.objectFunction').on('change', function(){
switch($(this).val()) {
case 'Endpoint':
// Re-enable mounting config
$('input.sideCount').prop('disabled', false);
break;
case 'Passive':
// Default mounting config, only Endpoints can be 4-post
$('.sideSelector').prop('disabled', true);
$('input.sideCount').prop('disabled', true);
$('#inputSideCount2Post').prop('checked', true);
$('#sideSelectorFront').prop('checked', true);
switchSides(0);
setPartitionSizeInput();
setInputValues();
handleOrientationInput();
break;
}
// Display only relevant input
togglePartitionTypeDependencies();
});
// Partition Type
$('input.partitionType').on('change', function(){
var variables = getVariables();
var partitionType = $(this).val();
setDefaultData(variables['selectedObj']);
$(variables['selectedObj']).data('partitionType', partitionType);
$(variables['selectedObj']).empty();
setPartitionSizeInput();
setInputValues();
togglePartitionTypeDependencies();
// Connectable and Enclosure tables require flex-direction column
if(partitionType == 'Connectable' || partitionType == 'Enclosure') {
$(variables['selectedObj']).css('flex-direction', 'column');
} else {
var parentDirection = $(variables['selectedParent']).css('flex-direction');
if(parentDirection == 'column') {
var partitionDirection = 'row';
} else {
var partitionDirection = 'column';
}
$(variables['selectedObj']).css('flex-direction', partitionDirection).data('direction', partitionDirection);
}
handleOrientationInput();
if(partitionType == 'Connectable') {
buildPortTable();
updatePortNameDisplay();
} else if(partitionType == 'Enclosure') {
var x = $('#inputEnclosureLayoutX').val();
var y = $('#inputEnclosureLayoutY').val();
var table = buildTable(x, y, 'enclosureTable', true);
$(variables['selectedObj']).html(table);
}
});
// Prevent Modal if Invoker is Disabled
$('#portNameModal').on('hide.bs.modal', function (e) {
if($(document).data('portNameFormatAction') == 'edit') {
// Gather user input
var data = {
action: 'edit',
attribute: 'portNameFormat',
templateID: $('#selectedObjectID').val(),
templateFace: $('#selectedObjectFace').val(),
templateDepth: $('#selectedPartitionDepth').val(),
value: $(document).data('portNameFormatEdit')
};
// Convert to JSON string so it can be posted
data = JSON.stringify(data);
// Post for validation
$.post('backend/process_object-custom.php', {'data':data}, function(responseJSON){
var response = JSON.parse(responseJSON);
if (response.active == 'inactive'){
window.location.replace("/");
} else if ($(response.error).size() > 0){
//$('#alertMsgPortName')
displayError(response.error);
} else {
$('#detailPortRange').html('
'+response.success+'');
}
});
}
});
// Prevent Modal if Invoker is Disabled
$('#portNameModal').on('show.bs.modal', function (e) {
var invoker = $(e.relatedTarget);
if($(invoker).hasClass('no-modal')) {
return false;
}
});
// Focus First Port Name Field
$('#portNameModal').on('shown.bs.modal', function (e){
var invoker = $(e.relatedTarget);
$(document).data('portNameFormatAction', $(invoker).data('portNameAction'));
setPortNameInput();
handlePortNameFieldAddRemoveButtons();
updatePortNameDisplay();
setPortNameFieldFocus();
if(!$('.portNameFields:focus').length) {
$('.portNameFields').first().focus();
}
//handlePortNameOptions();
$('.portNameFields').on('keyup', function(){
updateportNameFormat();
updatePortNameDisplay();
});
});
// Port Naming Add Field
$('#buttonAddPortNameField').on('click', function(){
//var fieldFocused = $(document).data('focusedPortNameField');
var focusedPortNameField = $('#portNameFieldContainer').find('.input-focused');
var nameFieldHTML = $('
 
');
nameFieldHTML.insertAfter(focusedPortNameField.parent());
setPortNameFieldFocus();
handlePortNameOptions();
nameFieldHTML.children('input').focus();
handlePortNameFieldAddRemoveButtons();
updateportNameFormat();
updatePortNameDisplay();
$('.portNameFields').off('keyup');
$('.portNameFields').on('keyup', function(){
updateportNameFormat();
updatePortNameDisplay();
});
});
// Port Naming Remove Field
$('#buttonDeletePortNameField').on('click', function(){
//var fieldFocused = $(document).data('focusedPortNameField');
var focusedPortNameField = $('#portNameFieldContainer').find('.input-focused');
var portNameFields = $('.portNameFields');
var fieldFocusedIndex = $(portNameFields).index(focusedPortNameField);
$(focusedPortNameField).parent().remove();
resetIncrementals();
$(portNameFields).eq(fieldFocusedIndex-1).focus();
handlePortNameFieldAddRemoveButtons();
updateportNameFormat();
updatePortNameDisplay();
});
// Port Naming Type Selection
$('#selectPortNameFieldType').on('change', function(){
//var focusedPortNameField = $(document).data('focusedPortNameField');
var focusedPortNameField = $('#portNameFieldContainer').find('.input-focused');
var valuePortNameType = $(this).val();
focusedPortNameField.data('type', valuePortNameType);
$(focusedPortNameField).attr('data-type', valuePortNameType);
if(valuePortNameType == 'static') {
$(focusedPortNameField).data('order', 0);
$(focusedPortNameField).val('Port');
} else if(valuePortNameType == 'incremental') {
$(focusedPortNameField).val('1');
} else if(valuePortNameType == 'series') {
$(focusedPortNameField).val('a,b,c');
}
resetIncrementals();
handlePortNameOptions();
updateportNameFormat();
updatePortNameDisplay();
});
// Port Naming Count
$('#inputPortNameFieldCount').on('change', function(){
//var focusedPortNameField = $(document).data('focusedPortNameField');
var focusedPortNameField = $('#portNameFieldContainer').find('.input-focused');
var valueCount = $(this).val();
focusedPortNameField.data('count', valueCount);
updateportNameFormat();
updatePortNameDisplay();
});
// Port Naming Order
$('#selectPortNameFieldOrder').on('change', function(){
var valueOrder = parseInt($(this).val());
reorderIncrementals(valueOrder);
updateportNameFormat();
updatePortNameDisplay();
});
// Port Naming Results Update
$('#buttonPortNameModalUpdate').on('click', function(){
var portTotal = 10;
var portStringArray = [];
var allElements = $('.portNameFields');
var incrementalElements = $('.portNameFields[data-type="incremental"], .portNameFields[data-type="series"]');
var incrementalCount = $(incrementalElements).length;
var incrementalArray = {};
$(incrementalElements).each(function(){
var elementType = $(this).data('type');
var elementValue = $(this).val();
if(elementType == 'incremental') {
var elementCount = parseInt($(this).data('count'));
if(elementCount == 0) {
elementCount = portTotal;
}
} else if(elementType == 'series') {
elementValue = elementValue.split(',');
var elementCount = elementValue.length;
}
var elementOrder = parseInt($(this).data('order'));
var elementNumerator = 0;
incrementalArray[elementOrder] = {
type: elementType,
value: elementValue,
count: elementCount,
order: elementOrder,
numerator: elementNumerator
};
});
$.each(incrementalArray, function(index, item){
if(item.order == incrementalCount) {
item.numerator = 1;
} else {
var y = item.order+1;
for(var x = y; x <= incrementalCount; x++) {
item.numerator += incrementalArray[x].count;
}
}
});
for(var x=0; x
= incremental.count) {
var rollOver = Math.floor(howMuchToIncrement / incremental.count);
howMuchToIncrement = howMuchToIncrement - (rollOver*incremental.count);
}
if(dataType == 'incremental') {
portString = portString + (parseInt(incremental.value) + howMuchToIncrement);
} else if(dataType == 'series') {
portString = portString + incremental.value[howMuchToIncrement];
}
}
});
portStringArray.push(portString);
}
$('#portNameResults').empty();
$.each(portStringArray, function(index, item){
$('#portNameResults').append(item+'
');
});
$('#portNameResults').append('...');
});
// Custom Partition Orientation
$('.partitionAxis').on('change', function(){
handlePartitionAddRemove();
});
// Custom Partition Add
$('#customPartitionAdd').on('click', function(){
var variables = getVariables();
setDefaultData(variables['selectedObj']);
addPartition();
handleOrientationInput();
// If the added partition affects obj RUSize,
// reset the RUSize minimum.
var isParent = $(variables['selectedObj']).hasClass('flex-container-parent');
var isParentChild = $(variables['selectedObj']).parent().hasClass('flex-container-parent');
var isHorizontal = $(variables['selectedObj']).css('flex-direction') == 'column' ? true : false;
if((isParent || isParentChild) && isHorizontal){
resetRUSize();
}
});
// Custom Partition Remove
$('[id^=customPartitionRemove]').on('click', function(){
var variables = getVariables();
var partitionDepth = $(variables['selectedObj']).parentsUntil('.flex-container-parent').length;
var isHorizontal = $(variables['selectedObj']).css('flex-direction') == 'row' ? true : false;
// Check to see if the object being deleted is the only one.
if($(variables['selectedParent']).children().length > 1){
// Select the preceding object
var selectedObjIndex = $(variables['selectedObj']).index();
$(variables['selectedParent']).children().eq(selectedObjIndex-1).addClass('rackObjSelected');
} else {
$(variables['selectedParent']).addClass('rackObjSelected');
$('.dependantField.connectable').prop('disabled', false);
}
$(variables['selectedObj']).remove();
if(partitionDepth < 2 && isHorizontal){
resetRUSize();
}
setPartitionSizeInput();
setInputValues();
togglePartitionTypeDependencies();
handleOrientationInput();
});
// Custom Partition Size
$('#inputCustomPartitionSize').on('change', function(){
var variables = getVariables();
resizePartition($(this).val());
var isParentChild = $(variables['selectedObj']).parent().hasClass('flex-container-parent');
var isParentChildNested = $(variables['selectedObj']).parent().parent().hasClass('flex-container-parent');
var isHorizontal = $(variables['selectedObj']).css('flex-direction') == 'row' ? true : false;
if((isParentChild || isParentChildNested) && isHorizontal){
resetRUSize();
}
});
// Enclosure Layout
$('[id^=inputEnclosureLayout]').on('change', function(){
var variables = getVariables();
var x = $('#inputEnclosureLayoutX').val();
var y = $('#inputEnclosureLayoutY').val();
var table = buildTable(x, y, 'enclosureTable', true);
$(variables['selectedObj']).html(table);
$(variables['selectedObj']).data('valueX', x);
$(variables['selectedObj']).data('valueY', y);
//Apply the selected category to the active object
$(".activeObj").addClass($('#inputCategory').find('option:selected').data('value'));
});
// Enclosure Strict Insert Fitment
$('[id^=inputEnclosureTolerance]').on('change', function(){
var enclosureTolerance = $(this).val();
var variables = getVariables();
$(variables['selectedObj']).data('encTolerance', enclosureTolerance);
});
// Port Layout
$('[id^=inputPortLayout]').on('change', function(){
var variables = getVariables();
var x = $('#inputPortLayoutX').val();
var y = $('#inputPortLayoutY').val();
$(variables['selectedObj']).data('valueX', x);
$(variables['selectedObj']).data('valueY', y);
buildPortTable();
updatePortNameDisplay();
});
// Set port orientation
$('input.objectPortOrientation').on('change', function(){
var variables = getVariables();
$(variables['selectedObj']).data('portOrientation', $(this).val());
});
// Set port type
$('#inputPortType').on('change', function(){
var variables = getVariables();
$(variables['selectedObj']).data('portType', $(this).val());
buildPortTable();
});
// Set media type
$('#inputMediaType').on('change', function(){
var variables = getVariables();
$(variables['selectedObj']).data('mediaType', $(this).val());
});
// Prevent modal if disabled
$('#modalTemplateDeleteConfirm').on('show.bs.modal', function (e){
var button = e.relatedTarget;
if($(button).hasClass('disabled')) {
return false;
}
});
// Set template name in delete confirm modal
$('#modalTemplateDeleteConfirm').on('shown.bs.modal', function (e){
var templateCombined = $(document).data('selectedTemplateCombined');
if(templateCombined == 'yes') {
var templateName = $(document).data('selectedTemplateCombinedName');
} else {
var templateName = $(document).data('selectedTemplateName');
}
var templateCategoryName = $(document).data('selectedTemplateCategoryName');
$('#deleteTemplateName').html(templateName + ' (' + templateCategoryName + ')');
});
// Prevent modal if disabled
$('#modalTemplateWhereUsed').on('show.bs.modal', function (e){
var button = e.relatedTarget;
if($(button).hasClass('disabled')) {
return false;
}
});
// Find where template is used
$('#modalTemplateWhereUsed').on('shown.bs.modal', function (e){
var templateID = $(document).data('selectedTemplateID');
var templateName = $(document).data('selectedTemplateName');
var templateCategoryName = $(document).data('selectedTemplateCategoryName');
$('#whereUsedTemplateName').html(templateName + ' (' + templateCategoryName + ')');
//Collect template data
var data = {
templateID: templateID
};
data = JSON.stringify(data);
//Retrieve object details
$.post("backend/retrieve_where_used.php", {data:data}, function(response){
var responseJSON = JSON.parse(response);
if (responseJSON.active == 'inactive'){
window.location.replace("/");
} else if ($(responseJSON.error).size() > 0){
displayError(responseJSON.error);
} else {
var response = responseJSON.success;
$('#whereUsedResults').html(response);
}
});
});
// Select template requested by app
if($('#templateID').length) {
var templateID = $('#templateID').val();
// Dropdown template category
$('#availableContainer0').find('[data-template-id='+templateID+']').closest('.categoryContainerEntire').children('.categoryTitle').click();
// Select template
$('#availableContainer0').find('[data-template-id='+templateID+']').children(':first').click();
$('#templateID').remove();
}
});