/****************************************************************************************************************************************/ var environmentBlockCount = 0; var environmentController = null; /****************************************************************************************************************************************/ function attachSpinner(targetSelector) { var targetObject = $(targetSelector); targetElement = targetObject.get(0); var spinnerObject = new Spinner({ lines: 13, // The number of lines to draw length: 2, // The length of each line width: 8, // The line thickness radius: 25, // The radius of the inner circle corners: 0.8, // Corner roundness (0..1) rotate: 0, // The rotation offset direction: 1, // 1: clockwise, -1: counterclockwise color: '#444', // #rgb or #rrggbb or array of colors speed: 1.2, // Rounds per second trail: 50, // Afterglow percentage shadow: false, // Whether to render a shadow hwaccel: false, // Whether to use hardware acceleration className: 'spinner', // The CSS class to assign to the spinner zIndex: 2e9, // The z-index (defaults to 2000000000) }).spin(targetElement); } $(function() { attachSpinner('#o2_environment_block_container'); }); function encodeParameterArray(parameterArray) { var parameterSyntaxArray = []; for (var i in parameterArray) { parameterSyntaxArray.push(i+'='+parameterArray[i]); } var parameterSyntax = '?'+parameterSyntaxArray.join('&'); return parameterSyntax; } function blockUserInterface() { $('#o2_environment_block_container').show(); environmentBlockCount++; } function unblockUserInterface() { environmentBlockCount--; if (environmentBlockCount <= 0) { environmentBlockCount = 0; $('#o2_environment_block_container').hide(); } } function clearMessage(containerSelector) { var containerElement = $(containerSelector); containerElement.html(''); containerElement.hide(); } function displayMessage(containerSelector, messageContent, messageType) { var containerElement = $(containerSelector); if (messageContent instanceof Array) { if (messageContent.length <= 1) messageContent = messageContent.join("
"); else { var messageContent2 = ''; messageContent = messageContent2; } } var messageClass = 'o2_message_information'; var messageIconClass = 'fa-info-circle'; if (messageType == 'success') { messageClass = 'o2_message_success'; messageIconClass = 'fa-check'; } else if (messageType == 'warning') { messageClass = 'o2_message_warning'; messageIconClass = 'fa-exclamation-triangle'; } else if (messageType == 'error') { messageClass = 'o2_message_error'; messageIconClass = 'fa-times-circle'; } else if (messageType == 'information') { messageClass = 'o2_message_information'; messageIconClass = 'fa-info-circle'; } containerElement.html('
'+messageContent+'
'); containerElement.show(); } function displayMessageSuccess(messageSelector, messageContent) { displayMessage(messageSelector, messageContent, 'success'); } function displayMessageError(messageSelector, messageContent) { displayMessage(messageSelector, messageContent, 'error'); } function displayMessageWarning(messageSelector, messageContent) { displayMessage(messageSelector, messageContent, 'warning'); } function displayMessageInformation(messageSelector, messageContent) { displayMessage(messageSelector, messageContent, 'information'); } function displayModalMessage(modalTitle, modalContent, callbackFunctionConfirm, overwriteOptionArray) { if (modalContent instanceof Array) modalContent = modalContent.join('
'); var modalContainer = $('#o2_modal_container'); if (modalContainer.length == 0) { var appendElement = $('
'); $('body').append(appendElement); var modalContainer = appendElement; } var modalElement = $('
'); modalElement.html('\
\
\
\
'+modalContent+'
\
\
\
\ Understood\
\
\ '); modalContainer.append(modalElement); var modalOptionArray = { width: 600, height: 'auto', minHeight: 70, minWidth: 300, title: modalTitle, modal: true, animation: false } if (typeof overwriteOptionArray == 'object') { for (var i in overwriteOptionArray) { modalOptionArray[i] = overwriteOptionArray[i]; } } modalElement.kendoWindow(modalOptionArray); var modalObject = modalElement.data('kendoWindow'); modalObject.center().open(); modalElement.find('.o2_trigger_confirm').click(function() { modalObject.destroy(); modalElement.remove(); if (typeof callbackFunctionConfirm == 'function') callbackFunctionConfirm(); }); } function displayModalError(modalContent, callbackFunctionConfirm, overwriteOptionArray) { var modalTitle = 'Operation Error'; displayModalMessage(modalTitle, modalContent, callbackFunctionConfirm, overwriteOptionArray); } function displayModalConfirmation(modalTitle, modalContent, callbackFunctionConfirm, callbackFunctionCancel, overwriteOptionArray) { if (modalContent instanceof Array) modalContent = modalContent.join('
'); var modalContainer = $('#o2_modal_container'); if (modalContainer.length == 0) { var appendElement = $('
'); $('body').append(appendElement); var modalContainer = appendElement; } var modalElement = $('
'); modalElement.html('\
\
\
\
'+modalContent+'
\
\
\
\ Confirm\ Cancel\
\
\ '); modalContainer.append(modalElement); var modalOptionArray = { width: 600, height: 'auto', minHeight: 70, minWidth: 300, title: modalTitle, modal: true, animation: false, close: function(e) { if (typeof callbackFunctionCancel == 'function') callbackFunctionCancel(); } } if (typeof overwriteOptionArray == 'object') { for (var i in overwriteOptionArray) { modalOptionArray[i] = overwriteOptionArray[i]; } } modalElement.kendoWindow(modalOptionArray); var modalObject = modalElement.data('kendoWindow'); modalObject.center().open(); modalElement.find('.o2_trigger_confirm').click(function() { modalObject.destroy(); modalElement.remove(); if (typeof callbackFunctionConfirm == 'function') callbackFunctionConfirm(); }); modalElement.find('.o2_trigger_cancel').click(function() { modalObject.destroy(); modalElement.remove(); if (typeof callbackFunctionCancel == 'function') callbackFunctionCancel(); }); } /****************************************************************************************************************************************/ function displayModalOutput(requestAddress, requestParameterArray, modalTitle, overwriteOptionArray) { var modalContainer = $('#o2_modal_container'); if (modalContainer.length == 0) { var appendElement = $('
'); $('body').append(appendElement); var modalContainer = appendElement; } var modalElement = $('
'); modalElement.html('\
\
\
\
Loading data. Please wait.
\
\
\
\ Understood\
\
\ '); modalContainer.append(modalElement); var modalOptionArray = { width: 600, height: 'auto', minHeight: 70, minWidth: 300, title: modalTitle+' - Automatic Refresh', modal: true, animation: false } if (typeof overwriteOptionArray == 'object') { for (var i in overwriteOptionArray) { modalOptionArray[i] = overwriteOptionArray[i]; } } modalElement.kendoWindow(modalOptionArray); var modalObject = modalElement.data('kendoWindow'); modalObject.center().open(); modalElement.find('.o2_trigger_confirm').click(function() { modalObject.destroy(); modalElement.remove(); }); loadModalOutput(requestAddress, requestParameterArray, modalElement); } function loadModalOutput(requestAddress, requestParameterArray, modalElement) { var modalObject = modalElement.data('kendoWindow'); $.ajax({ type: "post", url: requestAddress, data: requestParameterArray, success: function(remoteContent) { if (modalElement.is(':visible')) { if (modalObject.content() != remoteContent) modalElement.find('.o2_modal_segment_1_1_content').html(remoteContent); setTimeout(function() { loadModalOutput(requestAddress, requestParameterArray, modalElement); }, 1000); } }, error: function() { displayModalMessage("Component Error", "Undefined internal error. Please reload the page and try again."); }, dataType: "html" }); } function constructUniqueId() { var returnUniqueId = ""; var referenceCharacterSet = "abcdefghijklmnopqrstuvwxyz0123456789"; var currentTimestamp = String(new Date().getTime()); var returnLength = 64 - currentTimestamp.length; for (var i=0; i'); $('body').append(appendElement); var modalContainer = appendElement; } var modalElement = $('
'); modalElement.html('
'+modalContent+'
'); modalContainer.append(modalElement); var modalOptionArray = { width: 600, height: 'auto', minHeight: 70, minWidth: 300, title: modalTitle, modal: true, animation: false } if (typeof overwriteOptionArray == 'object') { for (var i in overwriteOptionArray) { modalOptionArray[i] = overwriteOptionArray[i]; } } modalElement.kendoWindow(modalOptionArray); var modalObject = modalElement.data('kendoWindow'); modalObject.center().open(); } /****************************************************************************************************************************************/ ( function() { function EnvironmentController() { /**********************************/ this.environmentObjectArray = {}; /**********************************/ } EnvironmentController.prototype.storeScopeController = function(requestObject) { if (requestObject instanceof ScopeController) this.environmentObjectArray[requestObject.scopeElementUniqueId] = requestObject; else throw new Error('requestObject must be an instance of ScopeController.'); } EnvironmentController.prototype.getScopeController = function(requestUniqueId) { if (typeof this.environmentObjectArray[requestUniqueId] != 'undefined') var returnObject = this.environmentObjectArray[requestUniqueId]; else var returnObject = null; return returnObject; } environmentController = new EnvironmentController(); } )(); /****************************************************************************************************************************************/ function ScopeController(scopeElementSelector, scopeComponent) { /**********************************/ this.scopeElementUniqueId = null; this.scopeElement = null; this.scopeElementBlockCount = 0; this.scopeComponent = null; /**********************************/ if (typeof scopeComponent == 'undefined') scopeComponent = ''; else if (typeof scopeComponent != 'string') throw new Error('scopeComponent must be an instance of String.'); var scopeElement = $(scopeElementSelector); if (!scopeElement.length) throw new Error('scopeElementSelector not found in DOM.'); this.scopeElement = scopeElement; this.scopeElementUniqueId = this._bindElementComponent(); this.scopeComponent = scopeComponent; environmentController.storeScopeController(this); } ScopeController.prototype.$ = function(childSelector) { return this.scopeElement.find(childSelector); } ScopeController.prototype._bindElementComponent = function() { do { var scopeElementUniqueId = this._constructScopeElementUniqueId(); var scopeElementUniqueFound = true; if ($('[data-o2_unique_id="'+scopeElementUniqueId+'"]').length) scopeElementUniqueFound = false; } while (scopeElementUniqueFound === false); this.scopeElement.attr('data-o2_unique_id', scopeElementUniqueId); this.scopeElement.attr('data-o2_scope_component', this.scopeComponent); this.scopeElement.data('o2_object', this); this.scopeElement.addClass('o2_scope_element'); return scopeElementUniqueId; } ScopeController.prototype._constructScopeElementUniqueId = function() { var scopeElementUniqueId = ''; var uniqueCharacterSet = 'abcdefghijklmnopqrstuvwxyz0123456789'; var uniqueTimestamp = String(new Date().getTime()); var uniqueStringLength = 32 - uniqueTimestamp.length; for (var i=0; i'); this.scopeElement.append(overlayElement); attachSpinner(overlayElement.get(0)); } this.scopeElementBlockCount++; overlayElement.show(); } ScopeController.prototype.unblockScopeElement = function() { this.scopeElementBlockCount--; if (this.scopeElementBlockCount < 0) this.scopeElementBlockCount = 0; if (this.scopeElementBlockCount == 0) { var overlayElement = this.scopeElement.children('.o2_block_container').first(); if (overlayElement.length) overlayElement.remove(); } } /****************************************************************************************************************************************/