Repository: ambari Updated Branches: refs/heads/branch-2.5 f5dca1afc -> 930d5bf31
AMBARI-19521 Log Search Add 'last 24 hours' to the time picker buttons (mgergely) Change-Id: I5fb34a45f0fd73f4b60c614776ffa146417db594 Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/930d5bf3 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/930d5bf3 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/930d5bf3 Branch: refs/heads/branch-2.5 Commit: 930d5bf312fe42e4088398e4f5ae5d614216ed36 Parents: f5dca1a Author: Miklos Gergely <[email protected]> Authored: Mon Jan 16 11:27:00 2017 +0100 Committer: Miklos Gergely <[email protected]> Committed: Mon Jan 16 11:27:00 2017 +0100 ---------------------------------------------------------------------- .../src/main/webapp/scripts/utils/Utils.js | 2256 +++++++++--------- 1 file changed, 1130 insertions(+), 1126 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/930d5bf3/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/Utils.js ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/Utils.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/Utils.js index 924f92f..85c8245 100644 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/Utils.js +++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/scripts/utils/Utils.js @@ -17,858 +17,862 @@ */ define(['require', - 'utils/Enums', - 'utils/LangSupport', - 'moment', - 'utils/Globals', - 'bootbox' + 'utils/Enums', + 'utils/LangSupport', + 'moment', + 'utils/Globals', + 'bootbox' ],function(require,XAEnums,localization,moment,Globals,bootbox) { - 'use strict'; + 'use strict'; - var prevNetworkErrorTime = 0; - var Utils = {}; + var prevNetworkErrorTime = 0; + var Utils = {}; - require(['noty'],function(){ - $.extend($.noty.defaults,{ - timeout : 5000, - layout : "topRight", - theme : "relax", - closeWith: ['click','button'], - animation : { + require(['noty'],function(){ + $.extend($.noty.defaults,{ + timeout : 5000, + layout : "topRight", + theme : "relax", + closeWith: ['click','button'], + animation : { open : 'animated flipInX', close : 'animated flipOutX', easing: 'swing', speed : 500 } - - }); - }); - - // /////////////////////////////////////////////////////// - // Enum utility methods - // ////////////////////////////////////////////////////// - /**Utils - * Get enum for the enumId - * - * @param {integer} - * enumId - The enumId - */ - Utils.getEnum = function(enumId) { - if (!enumId || enumId.length < 1) { - return ""; - } - // check if the enums are loaded - if (!XAEnums[enumId]) { - return ""; - } - return XAEnums[enumId]; - }; - - /** - * Get enum by Enum and value - * - * @param {Object} - * myEnum - The enum - * @param {integer} - * value - The value - */ - Utils.enumElementByValue = function(myEnum, value) { - var element = _.detect(myEnum, function(element) { - return element.value == value; - }); - return element; - }; - - /** - * Get enum by Enum and name, value - * - * @param {Object} - * myEnum - The enum - * @param {string} - * propertyName - The name of key - * @param {integer} - * propertyValue - The value - */ - Utils.enumElementByPropertyNameValue = function(myEnum, propertyName, - propertyValue) { - for ( var element in myEnum) { - if (myEnum[element][propertyName] == propertyValue) { - return myEnum[element]; - } - } - return null; - }; - - /** - * Get enum value for given enum label - * - * @param {Object} - * myEnum - The enum - * @param {string} - * label - The label to search for in the Enum - */ - Utils.enumLabelToValue = function(myEnum, label) { - var element = _.detect(myEnum, function(element) { - return element.label == label; - }); - return (typeof element === "undefined") ? "--" : element.value; - }; - - /** - * Get enum label for given enum value - * - * @param {Object} - * myEnum - The enum - * @param {integer} - * value - The value - */ - Utils.enumValueToLabel = function(myEnum, value) { - var element = _.detect(myEnum, function(element) { - return element.value == value; - }); - return (typeof element === "undefined") ? "--" : element.label; - }; - - /** - * Get enum label tt string for given Enum value - * - * @param {Object} - * myEnum - The enum - * @param {integer} - * value - The value - */ - Utils.enumValueToLabeltt = function(myEnum, value) { - var element = _.detect(myEnum, function(element) { - return element.value == value; - }); - return (typeof element === "undefined") ? "--" : element.tt; - }; - - /** - * Get NVpairs for given Enum to be used in Select - * - * @param {Object} - * myEnum - The enum - */ - Utils.enumToSelectPairs = function(myEnum) { - return _.map(myEnum, function(o) { - return { - val : o.value, - label : o.label - }; - }); - }; - - /** - * Get NVpairs for given Enum - * - * @param {Object} - * myEnum - The enum - */ - Utils.enumNVPairs = function(myEnum) { - var nvPairs = { - ' ' : '--Select--' - }; - - for ( var name in myEnum) { - nvPairs[myEnum[name].value] = myEnum[name].label; - } - - return nvPairs; - }; - - /** - * Get array NV pairs for given Array - * - * @param {Array} - * myArray - The eArraynum - */ - Utils.arrayNVPairs = function(myArray) { - var nvPairs = { - ' ' : '--Select--' - }; - _.each(myArray, function(val) { - nvPairs[val] = val; - }); - return nvPairs; - }; - - Utils.notifyInfo = function(options) { - noty({ - type:"information", - text : "<i class='fa fa-exclamation-circle'></i> "+(options.content || "Info message.") - }); - }; - Utils.notifyWarn = function(options) { - noty({ - type:"warning", - text : "<i class='fa fa-times-circle'></i> "+(options.content || "Info message.") - }); - }; - - Utils.notifyError = function(options) { - noty({ - type:"error", - text : "<i class='fa fa-times-circle'></i> "+(options.content || "Error occurred.") - }); - }; - - Utils.notifySuccess = function(options) { - noty({ - type:"success", - text : "<i class='fa fa-check-circle-o'></i> "+(options.content || "Error occurred.") - }); - }; - - /** - * Convert new line to <br /> - * - * @param {string} - * str - the string to convert - */ - Utils.nl2br = function(str) { - if (!str) - return ''; - return str.replace(/\n/g, '<br/>').replace(/[\r\t]/g, " "); - }; - - /** - * Convert <br /> - * to new line - * - * @param {string} - * str - the string to convert - */ - Utils.br2nl = function(str) { - if (!str) - return ''; - return str.replace(/\<br(\s*\/|)\>/gi, '\n'); - }; - - /** - * Escape html chars - * - * @param {string} - * str - the html string to escape - */ - Utils.escapeHtmlChar = function(str) { - if (!str) - return ''; - str = str.replace(/&/g, "&"); - str = str.replace(/>/g, ">"); - str = str.replace(/</g, "<"); - str = str.replace(/\"/g, """); - str = str.replace(/'/g, "'"); - return str; - }; - - /** - * nl2br and Escape html chars - * - * @param {string} - * str - the html string - */ - Utils.nl2brAndEscapeHtmlChar = function(str) { - - if (!str) - return ''; - var escapedStr = escapeHtmlChar(str); - var finalStr = nl2br(str); - return finalStr; - }; - - /** - * prevent navigation with msg and call callback - * - * @param {String} - * msg - The msg to show - * @param {function} - * callback - The callback to call - */ - Utils.preventNavigation = function(msg, $form) { - window._preventNavigation = true; - window._preventNavigationMsg = msg; - $("body a, i[class^='icon-']").on("click.blockNavigation", function(e) { - Utils.preventNavigationHandler.call(this, e, msg, $form); - }); - }; - - /** - * remove the block of preventNavigation - */ - Utils.allowNavigation = function() { - window._preventNavigation = false; - window._preventNavigationMsg = undefined; - $("body a, i[class^='icon-']").off('click.blockNavigation'); - }; - - Utils.preventNavigationHandler = function(e, msg, $form) { - var formChanged = false; - var target = this; - if (!_.isUndefined($form)) - formChanged = $form.find('.dirtyField').length > 0 ? true : false; - if (!$(e.currentTarget).hasClass("_allowNav") && formChanged) { - - e.preventDefault(); - e.stopImmediatePropagation(); - bootbox.dialog(msg, [ { - "label" : localization.tt('btn.stayOnPage'), - "class" : "btn-success btn-small", - "callback" : function() { - } - }, { - "label" : localization.tt('btn.leavePage'), - "class" : "btn-danger btn-small", - "callback" : function() { - Utils.allowNavigation(); - target.click(); - } - } ]); - return false; - } - }; - - /** - * Bootbox wrapper for alert - * - * @param {Object} - * params - The params - */ - Utils.alertPopup = function(params) { - var obj = _.extend({ - message : params.msg - },params); - bootbox.alert(obj); - }; - - /** - * Bootbox wrapper for confirm - * - * @param {Object} - * params - The params - */ - Utils.confirmPopup = function(params) { - bootbox.confirm(params.msg, function(result) { - if (result) { - params.callback(); - } - }); - }; - - Utils.bootboxCustomDialogs = function(params) { - bootbox.dialog({ - title: params.title, - message: params.msg, - buttons: { - cancel: { - label: "Cancel", - className: "btn-secondary" - }, - Ok: { - className: "btn-primary", - callback: params.callback - } - } - }); - }; - - Utils.filterResultByIds = function(results, selectedVals) { - return _.filter(results, function(obj) { - if ($.inArray(obj.id, selectedVals) < 0) - return obj; - - }); - }; - Utils.filterResultByText = function(results, selectedVals) { - return _.filter(results, function(obj) { - if ($.inArray(obj.text, selectedVals) < 0) - return obj; - - }); - }; - Utils.scrollToField = function(field) { - $("html, body").animate({ - scrollTop : field.position().top - 80 - }, 1100, function() { - field.focus(); - }); - }; - Utils.blockUI = function(options) { - var Opt = { - autoUnblock : false, - clickUnblock : false, - bgPath : 'images/', - content : '<img src="images/blockLoading.gif" > Please wait..', - css : {} - }; - options = _.isUndefined(options) ? Opt : options; - $.msg(options); - }; - var errorShown = false; - Utils.defaultErrorHandler = function(model, error) { - if (error.status == 500) { - try { - if (!errorShown) { - errorShown = true; - Utils.notifyError({ - content: "Some issue on server, Please try again later." - }); - setTimeout(function() { - errorShown = false; - }, 3000); - } - } catch (e) {} - } - else if (error.status == 400) { - try { - if (!errorShown) { - errorShown = true; - Utils.notifyError({ - content: JSON.parse(error.responseText).msgDesc - }); - setTimeout(function() { - errorShown = false; - }, 3000); - } - } catch (e) {} - } else if (error.status == 401) { - window.location = 'login.html' + window.location.search; - // App.rContent.show(new vError({ - // status : error.status - // })); - - } else if (error.status == 419) { - window.location = 'login.html' + window.location.search; - - } else if (error.status == "0") { - var diffTime = (new Date().getTime() - prevNetworkErrorTime); - if (diffTime > 3000) { - prevNetworkErrorTime = new Date().getTime(); - if(error.statusText === "abort"){ - Utils.notifyInfo({ content: "You have canceled the request"}); - }else{ - Utils.notifyError({ - content: "Network Connection Failure : " + - "It seems you are not connected to the internet. Please check your internet connection and try again" - }); - } - } - } - // require(['views/common/ErrorView','App'],function(vError,App){ - - // }); - }; - Utils.select2Focus = function(event) { - if (/^select2-focus/.test(event.type)) { - $(this).select2('open'); - } - }; - - Utils.checkDirtyField = function(arg1, arg2, $elem) { - if (_.isEqual(arg1, arg2)) { - $elem.removeClass('dirtyField'); - } else { - $elem.addClass('dirtyField'); - } - }; - Utils.checkDirtyFieldForToggle = function($el) { - if ($el.hasClass('dirtyField')) { - $el.removeClass('dirtyField'); - } else { - $el.addClass('dirtyField'); - } - }; - Utils.checkDirtyFieldForSelect2 = function($el, dirtyFieldValue, that) { - if ($el.hasClass('dirtyField') - && _.isEqual($el.val(), dirtyFieldValue.toString())) { - $el.removeClass('dirtyField'); - } else if (!$el.hasClass('dirtyField')) { - $el.addClass('dirtyField'); - dirtyFieldValue = !_.isUndefined(that.value.values) ? that.value.values - : ''; - } - return dirtyFieldValue; - }; - Utils.enumToSelectLabelValuePairs = function(myEnum) { - return _.map(myEnum, function(o) { - return { - label : o.label, - value : o.value + '' - // category :'DHSS', - }; - }); - }; - Utils.hackForVSLabelValuePairs = function(myEnum) { - return _.map(myEnum, function(o) { - return { - label : o.label, - value : o.label + '' - // category :'DHSS', - }; - }); - }; - Utils.addVisualSearch = function(searchOpt, serverAttrName, collection, - pluginAttr) { - var visualSearch; - var search = function(searchCollection, serverAttrName, searchOpt, - collection) { - var params = {}; - searchCollection.each(function(m) { - var serverParamName = _.findWhere(serverAttrName, { - text : m.attributes.category - }); - var extraParam = {}; - if (_.has(serverParamName, 'multiple') - && serverParamName.multiple) { - extraParam[serverParamName.label] = Utils - .enumLabelToValue(serverParamName.optionsArr, m - .get('value')); - ; - $.extend(params, extraParam); - } else { - if (!_.isUndefined(serverParamName)) { - extraParam[serverParamName.label] = m.get('value'); - $.extend(params, extraParam); - } - } - }); - collection.queryParams = $.extend(collection.queryParams, params); - collection.state.currentPage = collection.state.firstPage; - collection.fetch({ - reset : true, - cache : false - // data : params, - }); - }; - // var searchOpt = ['Event Time','User','Resource Name','Resource - // ID','Resource Type','Repository Name','Repository - // Type','Result','Client IP','Client Type','Access Type','Access - // Enforcer','Audit Type','Session ID']; - - var callbackCommon = { - search : function(query, searchCollection) { - collection.VSQuery = query; - search(searchCollection, serverAttrName, searchOpt, collection); - }, - clearSearch : function(callback) { - _.each(serverAttrName, function(attr) { - delete collection.queryParams[attr.label]; - }); - callback(); - }, - facetMatches : function(callback) { - // console.log(visualSearch); - var searchOptTemp = $.extend(true, [], searchOpt); - visualSearch.searchQuery.each(function(m) { - if ($.inArray(m.get('category'), searchOptTemp) >= 0) { - searchOptTemp.splice($.inArray(m.get('category'), - searchOptTemp), 1); - } - }); - // visualSearch.options.readOnly = searchOptTemp.length <= 0 ? - // true : false; - callback(searchOptTemp, { - preserveOrder : false - }); - }, - removedFacet : function(removedFacet, searchCollection, indexObj) { - // console.log(removedFacet); - - var removedFacetSeverName = _.findWhere(serverAttrName, { - text : removedFacet.get('category') - }); - if (!_.isUndefined(removedFacetSeverName)) { - delete collection.queryParams[removedFacetSeverName.label]; - collection.state.currentPage = collection.state.firstPage; - collection.fetch({ - reset : true, - cache : false - }); - } - // TODO Added for Demo to remove datapicker popups - if (!_.isUndefined(visualSearch.searchBox.$el)) - visualSearch.searchBox.$el.parents('body').find( - '.datepicker').remove(); - } - // we can also add focus, blur events callback here.. - }; - pluginAttr.callbacks = $.extend(callbackCommon, pluginAttr.callbacks); - // Initializing VisualSearch Plugin.... - visualSearch = VS.init($.extend(pluginAttr, { - remainder : false - })); - - if (visualSearch.searchQuery.length > 0) // For On Load Visual Search - search(visualSearch.searchQuery, serverAttrName, searchOpt, - collection); - - return visualSearch; - }; - - Utils.displayDatepicker = function($el, facet, $date, callback) { - var input = $el - .find('.search_facet.is_editing input.search_facet_input'); - $el.parents('body').find('.datepicker').hide(); - input.datepicker({ - autoclose : true, - dateFormat : 'yy-mm-dd' - }).on('changeDate', function(ev) { - callback(ev.date); - input.datepicker("hide"); - var e = jQuery.Event("keydown"); - e.which = 13; // Enter - $(this).trigger(e); - }); - if (!_.isUndefined($date)) { - if (facet == 'Start Date') { - input.datepicker('setEndDate', $date); - } else { - input.datepicker('setStartDate', $date); - } - } - input.datepicker('show'); - input.on('blur', function(e) { - input.datepicker("hide"); - // $('.datepicker').remove(); - - }); - // input.attr("readonly", "readonly"); - input.on('keydown', function(e) { - if (e.which == 9 && e.shiftKey) { - input.datepicker('setValue', new Date()); - input.trigger('change'); - input.datepicker("hide"); - } - if (e.which == 13) { - var e1 = jQuery.Event("keypress"); - e1.which = 13; // Enter - $(this).trigger(e1); - - } - }); - return input; - }; - - Utils.capitaliseFirstLetter = function(string) { - return string.charAt(0).toUpperCase() + string.slice(1); - }; - Utils.lowerCaseFirstLetter = function(string) { - return string.charAt(0).toLowerCase() + string.slice(1); - }; - Utils.toUpperCase = function(string) { - return (""+string).toUpperCase(); - }; - - Utils.bindDraggableEvent = function($el){ - // - // Function maked all .box selector is draggable, to disable for concrete element add class .no-drop - // - $el - .draggable({ - revert: true, - zIndex: 2000, - cursor: "crosshair", - handle: '.box-name', - opacity: 0.8 - }) - .droppable({ - tolerance: 'pointer', - drop: function( event, ui ) { - var draggable = ui.draggable; - var droppable = $(this); - var dragPos = draggable.position(); - var dropPos = droppable.position(); - draggable.swap(droppable); - setTimeout(function() { - var dropmap = droppable.find('[id^=map-]'); - var dragmap = draggable.find('[id^=map-]'); - if (dragmap.length > 0 || dropmap.length > 0){ - dragmap.resize(); - dropmap.resize(); - } - else { - draggable.resize(); - droppable.resize(); - } - }, 50); - setTimeout(function() { - draggable.find('[id^=map-]').resize(); - droppable.find('[id^=map-]').resize(); - }, 250); - } - }); - }; - - Utils.scrollToSearchString = function(results, type, counter, adjPx,$el){ - if(results.length > 0){ - if(type === 'next'){ - if(counter > 0 && results.length == counter){ - counter = 0; - } - } else if (type === 'prev') { - if(counter < 0){ - counter = results.length - 1; - } else if(counter === results.length){ - counter = counter - 2; - } - } - results.removeClass("active"); - $(results[counter]).addClass("active"); - if(_.isUndefined($el)){ - $('html,body').animate({ - scrollTop: $(results[counter]).offset().top - adjPx - }, 100); - }else{ - $el.animate({ - scrollTop: $(results[counter]).offset().top - adjPx - }, 100); - } - - counter = (type === 'prev') ? counter - 1 : counter + 1; - } - return counter; - }; - //date should be javascript date - Utils.convertDateToUTC = function (date) { - return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()); + + }); + }); + + // /////////////////////////////////////////////////////// + // Enum utility methods + // ////////////////////////////////////////////////////// + /**Utils + * Get enum for the enumId + * + * @param {integer} + * enumId - The enumId + */ + Utils.getEnum = function(enumId) { + if (!enumId || enumId.length < 1) { + return ""; + } + // check if the enums are loaded + if (!XAEnums[enumId]) { + return ""; + } + return XAEnums[enumId]; + }; + + /** + * Get enum by Enum and value + * + * @param {Object} + * myEnum - The enum + * @param {integer} + * value - The value + */ + Utils.enumElementByValue = function(myEnum, value) { + var element = _.detect(myEnum, function(element) { + return element.value == value; + }); + return element; + }; + + /** + * Get enum by Enum and name, value + * + * @param {Object} + * myEnum - The enum + * @param {string} + * propertyName - The name of key + * @param {integer} + * propertyValue - The value + */ + Utils.enumElementByPropertyNameValue = function(myEnum, propertyName, + propertyValue) { + for ( var element in myEnum) { + if (myEnum[element][propertyName] == propertyValue) { + return myEnum[element]; + } + } + return null; + }; + + /** + * Get enum value for given enum label + * + * @param {Object} + * myEnum - The enum + * @param {string} + * label - The label to search for in the Enum + */ + Utils.enumLabelToValue = function(myEnum, label) { + var element = _.detect(myEnum, function(element) { + return element.label == label; + }); + return (typeof element === "undefined") ? "--" : element.value; + }; + + /** + * Get enum label for given enum value + * + * @param {Object} + * myEnum - The enum + * @param {integer} + * value - The value + */ + Utils.enumValueToLabel = function(myEnum, value) { + var element = _.detect(myEnum, function(element) { + return element.value == value; + }); + return (typeof element === "undefined") ? "--" : element.label; + }; + + /** + * Get enum label tt string for given Enum value + * + * @param {Object} + * myEnum - The enum + * @param {integer} + * value - The value + */ + Utils.enumValueToLabeltt = function(myEnum, value) { + var element = _.detect(myEnum, function(element) { + return element.value == value; + }); + return (typeof element === "undefined") ? "--" : element.tt; + }; + + /** + * Get NVpairs for given Enum to be used in Select + * + * @param {Object} + * myEnum - The enum + */ + Utils.enumToSelectPairs = function(myEnum) { + return _.map(myEnum, function(o) { + return { + val : o.value, + label : o.label + }; + }); + }; + + /** + * Get NVpairs for given Enum + * + * @param {Object} + * myEnum - The enum + */ + Utils.enumNVPairs = function(myEnum) { + var nvPairs = { + ' ' : '--Select--' + }; + + for ( var name in myEnum) { + nvPairs[myEnum[name].value] = myEnum[name].label; + } + + return nvPairs; + }; + + /** + * Get array NV pairs for given Array + * + * @param {Array} + * myArray - The eArraynum + */ + Utils.arrayNVPairs = function(myArray) { + var nvPairs = { + ' ' : '--Select--' + }; + _.each(myArray, function(val) { + nvPairs[val] = val; + }); + return nvPairs; + }; + + Utils.notifyInfo = function(options) { + noty({ + type:"information", + text : "<i class='fa fa-exclamation-circle'></i> "+(options.content || "Info message.") + }); + }; + Utils.notifyWarn = function(options) { + noty({ + type:"warning", + text : "<i class='fa fa-times-circle'></i> "+(options.content || "Info message.") + }); + }; + + Utils.notifyError = function(options) { + noty({ + type:"error", + text : "<i class='fa fa-times-circle'></i> "+(options.content || "Error occurred.") + }); + }; + + Utils.notifySuccess = function(options) { + noty({ + type:"success", + text : "<i class='fa fa-check-circle-o'></i> "+(options.content || "Error occurred.") + }); + }; + + /** + * Convert new line to <br /> + * + * @param {string} + * str - the string to convert + */ + Utils.nl2br = function(str) { + if (!str) + return ''; + return str.replace(/\n/g, '<br/>').replace(/[\r\t]/g, " "); + }; + + /** + * Convert <br /> + * to new line + * + * @param {string} + * str - the string to convert + */ + Utils.br2nl = function(str) { + if (!str) + return ''; + return str.replace(/\<br(\s*\/|)\>/gi, '\n'); + }; + + /** + * Escape html chars + * + * @param {string} + * str - the html string to escape + */ + Utils.escapeHtmlChar = function(str) { + if (!str) + return ''; + str = str.replace(/&/g, "&"); + str = str.replace(/>/g, ">"); + str = str.replace(/</g, "<"); + str = str.replace(/\"/g, """); + str = str.replace(/'/g, "'"); + return str; + }; + + /** + * nl2br and Escape html chars + * + * @param {string} + * str - the html string + */ + Utils.nl2brAndEscapeHtmlChar = function(str) { + + if (!str) + return ''; + var escapedStr = escapeHtmlChar(str); + var finalStr = nl2br(str); + return finalStr; + }; + + /** + * prevent navigation with msg and call callback + * + * @param {String} + * msg - The msg to show + * @param {function} + * callback - The callback to call + */ + Utils.preventNavigation = function(msg, $form) { + window._preventNavigation = true; + window._preventNavigationMsg = msg; + $("body a, i[class^='icon-']").on("click.blockNavigation", function(e) { + Utils.preventNavigationHandler.call(this, e, msg, $form); + }); + }; + + /** + * remove the block of preventNavigation + */ + Utils.allowNavigation = function() { + window._preventNavigation = false; + window._preventNavigationMsg = undefined; + $("body a, i[class^='icon-']").off('click.blockNavigation'); + }; + + Utils.preventNavigationHandler = function(e, msg, $form) { + var formChanged = false; + var target = this; + if (!_.isUndefined($form)) + formChanged = $form.find('.dirtyField').length > 0 ? true : false; + if (!$(e.currentTarget).hasClass("_allowNav") && formChanged) { + + e.preventDefault(); + e.stopImmediatePropagation(); + bootbox.dialog(msg, [ { + "label" : localization.tt('btn.stayOnPage'), + "class" : "btn-success btn-small", + "callback" : function() { + } + }, { + "label" : localization.tt('btn.leavePage'), + "class" : "btn-danger btn-small", + "callback" : function() { + Utils.allowNavigation(); + target.click(); + } + } ]); + return false; + } + }; + + /** + * Bootbox wrapper for alert + * + * @param {Object} + * params - The params + */ + Utils.alertPopup = function(params) { + var obj = _.extend({ + message : params.msg + },params); + bootbox.alert(obj); + }; + + /** + * Bootbox wrapper for confirm + * + * @param {Object} + * params - The params + */ + Utils.confirmPopup = function(params) { + bootbox.confirm(params.msg, function(result) { + if (result) { + params.callback(); + } + }); + }; + + Utils.bootboxCustomDialogs = function(params) { + bootbox.dialog({ + title: params.title, + message: params.msg, + buttons: { + cancel: { + label: "Cancel", + className: "btn-secondary" + }, + Ok: { + className: "btn-primary", + callback: params.callback + } + } + }); + }; + + Utils.filterResultByIds = function(results, selectedVals) { + return _.filter(results, function(obj) { + if ($.inArray(obj.id, selectedVals) < 0) + return obj; + + }); + }; + Utils.filterResultByText = function(results, selectedVals) { + return _.filter(results, function(obj) { + if ($.inArray(obj.text, selectedVals) < 0) + return obj; + + }); + }; + Utils.scrollToField = function(field) { + $("html, body").animate({ + scrollTop : field.position().top - 80 + }, 1100, function() { + field.focus(); + }); + }; + Utils.blockUI = function(options) { + var Opt = { + autoUnblock : false, + clickUnblock : false, + bgPath : 'images/', + content : '<img src="images/blockLoading.gif" > Please wait..', + css : {} + }; + options = _.isUndefined(options) ? Opt : options; + $.msg(options); + }; + var errorShown = false; + Utils.defaultErrorHandler = function(model, error) { + if (error.status == 500) { + try { + if (!errorShown) { + errorShown = true; + Utils.notifyError({ + content: "Some issue on server, Please try again later." + }); + setTimeout(function() { + errorShown = false; + }, 3000); + } + } catch (e) {} + } + else if (error.status == 400) { + try { + if (!errorShown) { + errorShown = true; + Utils.notifyError({ + content: JSON.parse(error.responseText).msgDesc + }); + setTimeout(function() { + errorShown = false; + }, 3000); + } + } catch (e) {} + } else if (error.status == 401) { + window.location = 'login.html' + window.location.search; + // App.rContent.show(new vError({ + // status : error.status + // })); + + } else if (error.status == 419) { + window.location = 'login.html' + window.location.search; + + } else if (error.status == "0") { + var diffTime = (new Date().getTime() - prevNetworkErrorTime); + if (diffTime > 3000) { + prevNetworkErrorTime = new Date().getTime(); + if(error.statusText === "abort"){ + Utils.notifyInfo({ content: "You have canceled the request"}); + }else{ + Utils.notifyError({ + content: "Network Connection Failure : " + + "It seems you are not connected to the internet. Please check your internet connection and try again" + }); + } + } + } + // require(['views/common/ErrorView','App'],function(vError,App){ + + // }); + }; + Utils.select2Focus = function(event) { + if (/^select2-focus/.test(event.type)) { + $(this).select2('open'); + } + }; + + Utils.checkDirtyField = function(arg1, arg2, $elem) { + if (_.isEqual(arg1, arg2)) { + $elem.removeClass('dirtyField'); + } else { + $elem.addClass('dirtyField'); + } + }; + Utils.checkDirtyFieldForToggle = function($el) { + if ($el.hasClass('dirtyField')) { + $el.removeClass('dirtyField'); + } else { + $el.addClass('dirtyField'); + } + }; + Utils.checkDirtyFieldForSelect2 = function($el, dirtyFieldValue, that) { + if ($el.hasClass('dirtyField') + && _.isEqual($el.val(), dirtyFieldValue.toString())) { + $el.removeClass('dirtyField'); + } else if (!$el.hasClass('dirtyField')) { + $el.addClass('dirtyField'); + dirtyFieldValue = !_.isUndefined(that.value.values) ? that.value.values + : ''; + } + return dirtyFieldValue; + }; + Utils.enumToSelectLabelValuePairs = function(myEnum) { + return _.map(myEnum, function(o) { + return { + label : o.label, + value : o.value + '' + // category :'DHSS', + }; + }); + }; + Utils.hackForVSLabelValuePairs = function(myEnum) { + return _.map(myEnum, function(o) { + return { + label : o.label, + value : o.label + '' + // category :'DHSS', + }; + }); + }; + Utils.addVisualSearch = function(searchOpt, serverAttrName, collection, + pluginAttr) { + var visualSearch; + var search = function(searchCollection, serverAttrName, searchOpt, + collection) { + var params = {}; + searchCollection.each(function(m) { + var serverParamName = _.findWhere(serverAttrName, { + text : m.attributes.category + }); + var extraParam = {}; + if (_.has(serverParamName, 'multiple') + && serverParamName.multiple) { + extraParam[serverParamName.label] = Utils + .enumLabelToValue(serverParamName.optionsArr, m + .get('value')); + ; + $.extend(params, extraParam); + } else { + if (!_.isUndefined(serverParamName)) { + extraParam[serverParamName.label] = m.get('value'); + $.extend(params, extraParam); + } + } + }); + collection.queryParams = $.extend(collection.queryParams, params); + collection.state.currentPage = collection.state.firstPage; + collection.fetch({ + reset : true, + cache : false + // data : params, + }); + }; + // var searchOpt = ['Event Time','User','Resource Name','Resource + // ID','Resource Type','Repository Name','Repository + // Type','Result','Client IP','Client Type','Access Type','Access + // Enforcer','Audit Type','Session ID']; + + var callbackCommon = { + search : function(query, searchCollection) { + collection.VSQuery = query; + search(searchCollection, serverAttrName, searchOpt, collection); + }, + clearSearch : function(callback) { + _.each(serverAttrName, function(attr) { + delete collection.queryParams[attr.label]; + }); + callback(); + }, + facetMatches : function(callback) { + // console.log(visualSearch); + var searchOptTemp = $.extend(true, [], searchOpt); + visualSearch.searchQuery.each(function(m) { + if ($.inArray(m.get('category'), searchOptTemp) >= 0) { + searchOptTemp.splice($.inArray(m.get('category'), + searchOptTemp), 1); + } + }); + // visualSearch.options.readOnly = searchOptTemp.length <= 0 ? + // true : false; + callback(searchOptTemp, { + preserveOrder : false + }); + }, + removedFacet : function(removedFacet, searchCollection, indexObj) { + // console.log(removedFacet); + + var removedFacetSeverName = _.findWhere(serverAttrName, { + text : removedFacet.get('category') + }); + if (!_.isUndefined(removedFacetSeverName)) { + delete collection.queryParams[removedFacetSeverName.label]; + collection.state.currentPage = collection.state.firstPage; + collection.fetch({ + reset : true, + cache : false + }); + } + // TODO Added for Demo to remove datapicker popups + if (!_.isUndefined(visualSearch.searchBox.$el)) + visualSearch.searchBox.$el.parents('body').find( + '.datepicker').remove(); + } + // we can also add focus, blur events callback here.. + }; + pluginAttr.callbacks = $.extend(callbackCommon, pluginAttr.callbacks); + // Initializing VisualSearch Plugin.... + visualSearch = VS.init($.extend(pluginAttr, { + remainder : false + })); + + if (visualSearch.searchQuery.length > 0) // For On Load Visual Search + search(visualSearch.searchQuery, serverAttrName, searchOpt, + collection); + + return visualSearch; + }; + + Utils.displayDatepicker = function($el, facet, $date, callback) { + var input = $el + .find('.search_facet.is_editing input.search_facet_input'); + $el.parents('body').find('.datepicker').hide(); + input.datepicker({ + autoclose : true, + dateFormat : 'yy-mm-dd' + }).on('changeDate', function(ev) { + callback(ev.date); + input.datepicker("hide"); + var e = jQuery.Event("keydown"); + e.which = 13; // Enter + $(this).trigger(e); + }); + if (!_.isUndefined($date)) { + if (facet == 'Start Date') { + input.datepicker('setEndDate', $date); + } else { + input.datepicker('setStartDate', $date); + } + } + input.datepicker('show'); + input.on('blur', function(e) { + input.datepicker("hide"); + // $('.datepicker').remove(); + + }); + // input.attr("readonly", "readonly"); + input.on('keydown', function(e) { + if (e.which == 9 && e.shiftKey) { + input.datepicker('setValue', new Date()); + input.trigger('change'); + input.datepicker("hide"); + } + if (e.which == 13) { + var e1 = jQuery.Event("keypress"); + e1.which = 13; // Enter + $(this).trigger(e1); + + } + }); + return input; + }; + + Utils.capitaliseFirstLetter = function(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + }; + Utils.lowerCaseFirstLetter = function(string) { + return string.charAt(0).toLowerCase() + string.slice(1); + }; + Utils.toUpperCase = function(string) { + return (""+string).toUpperCase(); + }; + + Utils.bindDraggableEvent = function($el){ + // + // Function maked all .box selector is draggable, to disable for concrete element add class .no-drop + // + $el + .draggable({ + revert: true, + zIndex: 2000, + cursor: "crosshair", + handle: '.box-name', + opacity: 0.8 + }) + .droppable({ + tolerance: 'pointer', + drop: function( event, ui ) { + var draggable = ui.draggable; + var droppable = $(this); + var dragPos = draggable.position(); + var dropPos = droppable.position(); + draggable.swap(droppable); + setTimeout(function() { + var dropmap = droppable.find('[id^=map-]'); + var dragmap = draggable.find('[id^=map-]'); + if (dragmap.length > 0 || dropmap.length > 0){ + dragmap.resize(); + dropmap.resize(); + } + else { + draggable.resize(); + droppable.resize(); + } + }, 50); + setTimeout(function() { + draggable.find('[id^=map-]').resize(); + droppable.find('[id^=map-]').resize(); + }, 250); + } + }); + }; + + Utils.scrollToSearchString = function(results, type, counter, adjPx,$el){ + if(results.length > 0){ + if(type === 'next'){ + if(counter > 0 && results.length == counter){ + counter = 0; + } + } else if (type === 'prev') { + if(counter < 0){ + counter = results.length - 1; + } else if(counter === results.length){ + counter = counter - 2; + } + } + results.removeClass("active"); + $(results[counter]).addClass("active"); + if(_.isUndefined($el)){ + $('html,body').animate({ + scrollTop: $(results[counter]).offset().top - adjPx + }, 100); + }else{ + $el.animate({ + scrollTop: $(results[counter]).offset().top - adjPx + }, 100); + } + + counter = (type === 'prev') ? counter - 1 : counter + 1; + } + return counter; + }; + //date should be javascript date + Utils.convertDateToUTC = function (date) { + return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()); } Utils.randomNumber = function(){ - var date = new Date(); - var id = new Number(); - return ((Math.random()*date.getTime())/2).toFixed(0) - } - /** - * GET data from form - * @param {object} title -serializeArray - */ - Utils.getFormData = function(serializeArray) { - var formJson = {}; - _.each(serializeArray, function(fValues) { - formJson[fValues.name] = fValues.value; - - }); - return formJson; - }; - Utils.getQueryParams = function(qs) { - qs = qs.split('+').join(' '); - - var params = {}, - tokens, - re = /[?&]?([^=]+)=([^&]*)/g; - try { - while (tokens = re.exec(qs)) { - params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]); - } - } catch (exception) { - console.error(exception); - Utils.notifyError({ - content: exception - }); - } - return params; - }; - /** - * [converDate description] - * @param {[type]} option [pass String or momnet object] - * @return {[type]} [it is string] - */ - Utils.dateUtil = new function() { - var that = this; - - this.getTimeZone = function(string, format) { - return moment(string).format((format || Globals.dateFormat)); - }; - this.getJSON = function(string) { - return moment(string).toJSON(); - }; - this.getMomentUTC = function(string) { - return moment.utc(string) - }; - this.getMomentObject = function(string) { - return moment(string) - } - this.getLocalTimeZoneDateObject = function(date,offset) { - return new Date(date.setMinutes(-(date.getTimezoneOffset() + (offset)))) - } - this.getTimeZoneDateObject = function(string) { - return new Date(string) - } - /** - * [getTimeZoneMomentDateObject it will return ] - * @param {[type]} option [require moment tz object] - * @return {[type]} [description] - */ - this.getTimeZoneFromMomentObject = function(momentO) { - if(momentO.isValid()){ - var date = momentO.format('MM/DD/YYYY,HH:mm:ss.SSS').split(','); - var dateObjectWithMilisecond =""; - if(date[0] && date[1]){ - var milliseconds = date[1].split('.'); - if(milliseconds[0] && milliseconds[1] ){ - dateObjectWithMilisecond = new Date( date[0] +" " +milliseconds[0]); - dateObjectWithMilisecond.setMilliseconds(milliseconds[1]); - }else{ - dateObjectWithMilisecond = new Date(date[0]); - } - return dateObjectWithMilisecond; - } - }else{ - this.getLocalTimeZoneDateObject( ((momentO.toDate())?(momentO.toDate()):(new Date(momentO)))); - } - } - this.getTimeDiff = function(option) { - // If You have time more then 24 hours so moment returns 0 for HH:MM:SS so using this 3 line we get perfect time gap - var self = this; - var ms = moment(option[1], "DD/MM/YYYY HH:mm:ss").diff(moment(option[0], "DD/MM/YYYY HH:mm:ss")); - var d = moment.duration(ms); - var s = Math.floor(d.asHours()) + that.getMomentUTC(ms).format(":mm:ss"); - this.splitedValue = s.split(':'); - - this.getHourDiff = function() { - return parseInt(self.splitedValue[0]); - }; - this.getMinuteDiff = function() { - return parseInt(self.splitedValue[1]); - }; - this.getSecondDiff = function() { - return parseInt(self.splitedValue[2]); - }; - } - this.setTimeZone =function(zone){ - moment.tz.setDefault(zone) - } - this.getRelativeDateString =function(){} - this.getLast1HourRange = function() { - var m = moment() - return [moment().hour(m.hours() - 1).minute(m.minutes()).seconds(m.seconds()).milliseconds(m.milliseconds() + 1), moment().hour(m.hours()).minute(m.minutes()).seconds(m.seconds()).milliseconds(m.milliseconds())]; - } - this.getTodayRange = function() { - return [moment().hour('0').minute('0').seconds('0').milliseconds("000"), moment().hour('23').minute('59').seconds('59').milliseconds("999")]; - } - this.getYesterdayRange = function() { - return [moment().subtract(1, 'days').hour('0').minute('0').seconds('0').milliseconds("000"), moment().subtract(1, 'days').hour('23').minute('59').seconds('59').milliseconds("999")]; - } - this.getLast7DaysRange = function() { - return [moment().subtract(6, 'days').hour('0').minute('0').seconds('0').milliseconds("000"), moment().hour('23').minute('59').seconds('59').milliseconds("999")]; - } - this.getLast30DaysRange = function() { - return [moment().subtract(29, 'days').hour('0').minute('0').seconds('0').milliseconds("000"), moment().hour('23').minute('59').seconds('59').milliseconds("999")]; - } - this.getThisMonthRange = function() { - return [moment().startOf('month').hour('0').minute('0').seconds('0').milliseconds("000"), moment().endOf('month').hour('23').minute('59').seconds('59').milliseconds("999")]; - } - this.getLastMonthRange = function() { - return [moment().subtract(1, 'month').startOf('month').hour('0').minute('0').seconds('0').milliseconds("000"), moment().subtract(1, 'month').endOf('month').hour('23').minute('59').seconds('59').milliseconds("999")]; - } - this.getOneDayTimeDiff = function(checkTime) { - var hourDiff = checkTime.getHourDiff(); + var date = new Date(); + var id = new Number(); + return ((Math.random()*date.getTime())/2).toFixed(0) + } + /** + * GET data from form + * @param {object} title -serializeArray + */ + Utils.getFormData = function(serializeArray) { + var formJson = {}; + _.each(serializeArray, function(fValues) { + formJson[fValues.name] = fValues.value; + + }); + return formJson; + }; + Utils.getQueryParams = function(qs) { + qs = qs.split('+').join(' '); + + var params = {}, + tokens, + re = /[?&]?([^=]+)=([^&]*)/g; + try { + while (tokens = re.exec(qs)) { + params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]); + } + } catch (exception) { + console.error(exception); + Utils.notifyError({ + content: exception + }); + } + return params; + }; + /** + * [converDate description] + * @param {[type]} option [pass String or momnet object] + * @return {[type]} [it is string] + */ + Utils.dateUtil = new function() { + var that = this; + + this.getTimeZone = function(string, format) { + return moment(string).format((format || Globals.dateFormat)); + }; + this.getJSON = function(string) { + return moment(string).toJSON(); + }; + this.getMomentUTC = function(string) { + return moment.utc(string) + }; + this.getMomentObject = function(string) { + return moment(string) + } + this.getLocalTimeZoneDateObject = function(date,offset) { + return new Date(date.setMinutes(-(date.getTimezoneOffset() + (offset)))) + } + this.getTimeZoneDateObject = function(string) { + return new Date(string) + } + /** + * [getTimeZoneMomentDateObject it will return ] + * @param {[type]} option [require moment tz object] + * @return {[type]} [description] + */ + this.getTimeZoneFromMomentObject = function(momentO) { + if(momentO.isValid()){ + var date = momentO.format('MM/DD/YYYY,HH:mm:ss.SSS').split(','); + var dateObjectWithMilisecond =""; + if(date[0] && date[1]){ + var milliseconds = date[1].split('.'); + if(milliseconds[0] && milliseconds[1] ){ + dateObjectWithMilisecond = new Date( date[0] +" " +milliseconds[0]); + dateObjectWithMilisecond.setMilliseconds(milliseconds[1]); + }else{ + dateObjectWithMilisecond = new Date(date[0]); + } + return dateObjectWithMilisecond; + } + }else{ + this.getLocalTimeZoneDateObject( ((momentO.toDate())?(momentO.toDate()):(new Date(momentO)))); + } + } + this.getTimeDiff = function(option) { + // If You have time more then 24 hours so moment returns 0 for HH:MM:SS so using this 3 line we get perfect time gap + var self = this; + var ms = moment(option[1], "DD/MM/YYYY HH:mm:ss").diff(moment(option[0], "DD/MM/YYYY HH:mm:ss")); + var d = moment.duration(ms); + var s = Math.floor(d.asHours()) + that.getMomentUTC(ms).format(":mm:ss"); + this.splitedValue = s.split(':'); + + this.getHourDiff = function() { + return parseInt(self.splitedValue[0]); + }; + this.getMinuteDiff = function() { + return parseInt(self.splitedValue[1]); + }; + this.getSecondDiff = function() { + return parseInt(self.splitedValue[2]); + }; + } + this.setTimeZone =function(zone){ + moment.tz.setDefault(zone) + } + this.getRelativeDateString =function(){} + this.getLast1HourRange = function() { + var m = moment() + return [moment().hour(m.hours() - 1).minute(m.minutes()).seconds(m.seconds()).milliseconds(m.milliseconds() + 1), moment().hour(m.hours()).minute(m.minutes()).seconds(m.seconds()).milliseconds(m.milliseconds())]; + } + this.getLast24HourRange = function() { + var m = moment() + return [moment().hour(m.hours() - 24).minute(m.minutes()).seconds(m.seconds()).milliseconds(m.milliseconds() + 1), moment().hour(m.hours()).minute(m.minutes()).seconds(m.seconds()).milliseconds(m.milliseconds())]; + } + this.getTodayRange = function() { + return [moment().hour('0').minute('0').seconds('0').milliseconds("000"), moment().hour('23').minute('59').seconds('59').milliseconds("999")]; + } + this.getYesterdayRange = function() { + return [moment().subtract(1, 'days').hour('0').minute('0').seconds('0').milliseconds("000"), moment().subtract(1, 'days').hour('23').minute('59').seconds('59').milliseconds("999")]; + } + this.getLast7DaysRange = function() { + return [moment().subtract(6, 'days').hour('0').minute('0').seconds('0').milliseconds("000"), moment().hour('23').minute('59').seconds('59').milliseconds("999")]; + } + this.getLast30DaysRange = function() { + return [moment().subtract(29, 'days').hour('0').minute('0').seconds('0').milliseconds("000"), moment().hour('23').minute('59').seconds('59').milliseconds("999")]; + } + this.getThisMonthRange = function() { + return [moment().startOf('month').hour('0').minute('0').seconds('0').milliseconds("000"), moment().endOf('month').hour('23').minute('59').seconds('59').milliseconds("999")]; + } + this.getLastMonthRange = function() { + return [moment().subtract(1, 'month').startOf('month').hour('0').minute('0').seconds('0').milliseconds("000"), moment().subtract(1, 'month').endOf('month').hour('23').minute('59').seconds('59').milliseconds("999")]; + } + this.getOneDayTimeDiff = function(checkTime) { + var hourDiff = checkTime.getHourDiff(); var seconDiff = checkTime.getSecondDiff(); var minuteDiff = checkTime.getMinuteDiff(); if (hourDiff <= 2) { if (hourDiff == 0) { - if (minuteDiff == 0) { + if (minuteDiff == 0) { if (seconDiff == 0) { return "+100MILLISECOND"; } else { @@ -904,257 +908,257 @@ define(['require', return "+1HOUR"; } } - this.getMonthDiff = function(startDate, endDate, dayGap, checkTime) { - var dayDiff = (moment(endDate).diff(startDate, 'days')); - if (dayDiff <= dayGap) { - if (dayDiff == 0) { - return this.getOneDayTimeDiff(checkTime) - } else { - return "+" + (moment(endDate).diff(startDate, 'days')) + "HOUR" - } - } else { - return "+1DAY" - } - } - this.calculateUnit =function(picker){ - var dayGap = 10, - startDate = new Date(picker.startDate.format('MM/DD/YYYY')), - endDate = new Date(picker.endDate.format('MM/DD/YYYY')), - now = new Date(moment().format('MM/DD/YYYY')); - - var checkTime = new that.getTimeDiff([picker.startDate.format('MM/DD/YYYY HH:mm:ss'), picker.endDate.format('MM/DD/YYYY HH:mm:ss')]); - - if ((moment(startDate).isSame(endDate)) && (moment(startDate).isSame(now))) { - //console.log("today") - return that.getOneDayTimeDiff(checkTime); - } else if ((moment(startDate).isSame(endDate)) && (moment(startDate).isBefore(now))) { - //console.log("yesterday") - return that.getOneDayTimeDiff(checkTime); - - } else if ((moment(startDate).isBefore(now)) || (moment(now).diff(startDate, 'days'))) { - if ((moment(now).diff(startDate, 'days')) === 6) { - //console.log("last 7 days"); - return "+8HOUR"; - } else if ((moment(now).diff(startDate, 'days') === 29) || (moment(now).diff(startDate, 'days') === 28) || (moment(now).diff(startDate, 'days') === 30)) { - //console.log("Last 30 days"); - return that.getMonthDiff(startDate, endDate, dayGap, checkTime); - } else if ((moment(now).diff(startDate, 'month') === 1) && (moment(now).diff(startDate, 'days') > 30) && (moment(startDate).isSame(endDate, 'month'))) { - //console.log("Last Month"); - return that.getMonthDiff(startDate, endDate, dayGap, checkTime); - } else if ((moment(startDate).isSame(endDate, 'month')) && ((moment(now).diff(startDate, 'days') === 29) || (moment(now).diff(startDate, 'days') === 30) || (moment(now).diff(startDate, 'days') === 28))) { - //console.log("this Month"); - return that.getMonthDiff(startDate, endDate, dayGap, checkTime); - } else if ((moment(endDate).diff(startDate, 'days') >= 28) && (moment(endDate).diff(startDate, 'days') <= 30)) { - //console.log("Last 30 days"); - return that.getMonthDiff(startDate, endDate, dayGap, checkTime); - } else if ((moment(endDate).diff(startDate, 'month') > 3)) { - return "+1MONTH"; - } else if ((moment(endDate).diff(startDate, 'month') < 3)) { - if ((moment(endDate).diff(startDate, 'month')) === 0) { - return that.getMonthDiff(startDate, endDate, dayGap, checkTime); - } else { - return "+1MONTH" - } - - } else { - return "+1MONTH"; - } - } else { - if ((moment(endDate).diff(startDate, 'days') < 10)) { - return "+2HOUR"; - } else if ((moment(endDate).diff(startDate, 'days') >15)) { - return "+8HOUR"; - } else if ((moment(endDate).diff(startDate, 'days') <= 30)) { - return "+1DAY"; - } else { - return "+1MONTH"; - } - } + this.getMonthDiff = function(startDate, endDate, dayGap, checkTime) { + var dayDiff = (moment(endDate).diff(startDate, 'days')); + if (dayDiff <= dayGap) { + if (dayDiff == 0) { + return this.getOneDayTimeDiff(checkTime) + } else { + return "+" + (moment(endDate).diff(startDate, 'days')) + "HOUR" + } + } else { + return "+1DAY" + } + } + this.calculateUnit =function(picker){ + var dayGap = 10, + startDate = new Date(picker.startDate.format('MM/DD/YYYY')), + endDate = new Date(picker.endDate.format('MM/DD/YYYY')), + now = new Date(moment().format('MM/DD/YYYY')); + + var checkTime = new that.getTimeDiff([picker.startDate.format('MM/DD/YYYY HH:mm:ss'), picker.endDate.format('MM/DD/YYYY HH:mm:ss')]); + + if ((moment(startDate).isSame(endDate)) && (moment(startDate).isSame(now))) { + //console.log("today") + return that.getOneDayTimeDiff(checkTime); + } else if ((moment(startDate).isSame(endDate)) && (moment(startDate).isBefore(now))) { + //console.log("yesterday") + return that.getOneDayTimeDiff(checkTime); + + } else if ((moment(startDate).isBefore(now)) || (moment(now).diff(startDate, 'days'))) { + if ((moment(now).diff(startDate, 'days')) === 6) { + //console.log("last 7 days"); + return "+8HOUR"; + } else if ((moment(now).diff(startDate, 'days') === 29) || (moment(now).diff(startDate, 'days') === 28) || (moment(now).diff(startDate, 'days') === 30)) { + //console.log("Last 30 days"); + return that.getMonthDiff(startDate, endDate, dayGap, checkTime); + } else if ((moment(now).diff(startDate, 'month') === 1) && (moment(now).diff(startDate, 'days') > 30) && (moment(startDate).isSame(endDate, 'month'))) { + //console.log("Last Month"); + return that.getMonthDiff(startDate, endDate, dayGap, checkTime); + } else if ((moment(startDate).isSame(endDate, 'month')) && ((moment(now).diff(startDate, 'days') === 29) || (moment(now).diff(startDate, 'days') === 30) || (moment(now).diff(startDate, 'days') === 28))) { + //console.log("this Month"); + return that.getMonthDiff(startDate, endDate, dayGap, checkTime); + } else if ((moment(endDate).diff(startDate, 'days') >= 28) && (moment(endDate).diff(startDate, 'days') <= 30)) { + //console.log("Last 30 days"); + return that.getMonthDiff(startDate, endDate, dayGap, checkTime); + } else if ((moment(endDate).diff(startDate, 'month') > 3)) { + return "+1MONTH"; + } else if ((moment(endDate).diff(startDate, 'month') < 3)) { + if ((moment(endDate).diff(startDate, 'month')) === 0) { + return that.getMonthDiff(startDate, endDate, dayGap, checkTime); + } else { + return "+1MONTH" + } + + } else { + return "+1MONTH"; + } + } else { + if ((moment(endDate).diff(startDate, 'days') < 10)) { + return "+2HOUR"; + } else if ((moment(endDate).diff(startDate, 'days') >15)) { + return "+8HOUR"; + } else if ((moment(endDate).diff(startDate, 'days') <= 30)) { + return "+1DAY"; + } else { + return "+1MONTH"; + } + } - } - this.getRelativeDateFromString = function(string){ - var obj = _.findWhere(Utils.relativeDates, { text : string}) - if(obj) - return obj.fn && obj.fn(); - } - - }; - Utils.relativeDates = { - last1Hour : {text : "Last 1 Hour",fn:Utils.dateUtil.getLast1HourRange}, - today : {text : "Today",fn:Utils.dateUtil.getTodayRange}, - yesterday : {text : "Yesterday",fn:Utils.dateUtil.getYesterdayRange}, + } + this.getRelativeDateFromString = function(string){ + var obj = _.findWhere(Utils.relativeDates, { text : string}) + if(obj) + return obj.fn && obj.fn(); + } + + }; + Utils.relativeDates = { + last1Hour : {text : "Last 1 Hour",fn:Utils.dateUtil.getLast1HourRange}, + last24Hour: {text : "Last 24 Hour",fn:Utils.dateUtil.getLast24HourRange}, + today : {text : "Today",fn:Utils.dateUtil.getTodayRange}, + yesterday : {text : "Yesterday",fn:Utils.dateUtil.getYesterdayRange}, last7Days : {text : "Last 7 Days",fn:Utils.dateUtil.getLast7DaysRange}, last30Days: {text : "Last 30 Days",fn:Utils.dateUtil.getLast30DaysRange}, thisMonth : {text : "This Month",fn:Utils.dateUtil.getThisMonthRange}, lastMonth : {text : "Last Month",fn:Utils.dateUtil.getLastMonthRange} - }; - - - /* - * Converting Include Exclude string - */ - Utils.encodeIncludeExcludeStr = function(arrOrStr,doEncode,token){ - var token = token || Globals.splitToken; - if(doEncode && _.isArray(arrOrStr)){ - return arrOrStr.join(token); - }else if(_.isString(arrOrStr)){ - return arrOrStr.split(token); - } - }; - - Utils.localStorage = { - checkLocalStorage:function(key,value){ - if (typeof(Storage) !== "undefined") { - return this.getLocalStorage(key,value); - } else { - console.log('Sorry! No Web Storage support'); - Utils.cookie.checkCookie(key,value); - } - }, - setLocalStorage:function(key,value){ - localStorage.setItem(key,value); - return {found:false,'value':value}; - }, - getLocalStorage:function(key,value){ - var keyValue = localStorage.getItem(key) - if(!keyValue || keyValue == "undefined"){ - return this.setLocalStorage(key,value); - }else{ - return {found:true,'value':keyValue}; - } - } - - } - Utils.cookie ={ - setCookie:function(cname,cvalue) { - //var d = new Date(); - //d.setTime(d.getTime() + (exdays*24*60*60*1000)); - //var expires = "expires=" + d.toGMTString(); - document.cookie = cname+"="+cvalue+"; " - return {found:false,'value':cvalue}; - }, - getCookie:function(findString) { - var search = findString + "="; - var ca = document.cookie.split(';'); - for(var i=0; i<ca.length; i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1); - if (c.indexOf(name) == 0) { - return c.substring(name.length, c.length); - } - } - return ""; - }, - checkCookie:function(key,value) { - var findString = getCookie(key); - if (findString != "" || keyValue != "undefined") { - return {found:true,'value':((findString == "undefined")?(undefined):(findString))}; - } else { - return setCookie(key,value); - } - } - } - - Utils.getRandomColor = function getRandomColor(str) { - if(!str) - return "#000"; - var hashCode = function(str) { - var hash = 0; - for (var i = 0; i < str.length; i++) { - hash = str.charCodeAt(i) + ((hash << 5) - hash); - } - return hash; - }; - - var intToRGB = function(i){ - var c = (i & 0x00FFFFFF) - .toString(16) - .toUpperCase(); - - return "00000".substring(0, 6 - c.length) + c; - }; - return "#" +intToRGB(hashCode(str)); - }; - /** - * [genrateSelect2 description] - * @param {[array of object]} listOfselect2 [] - * listOfselect2 = [ - { - id: "select2 id", - placeholder: "placeholder", - collection: "collection", - dataText: 'display text', //in binding for appling name - collectionHasCode: 'collection dosnt have id then pass what you want to show', // if collection dont have id , - modelAttr: 'collection attribute name', - mandatory: false, - nonCrud: getAuditSchemaFieldsName // pass function Name with params (suucess,error,etc) - fetch: true, - data:[] // it will not fetch from collection - }, - {...} - ] - collectionFetchLov // listenTo in your view - * @param {[type]} that [scope of function or view] - * @return {[type]} [description] - */ - Utils.genrateSelect2 =function(listOfselect2,that){ - - for (var i = 0; i < listOfselect2.length; i++) { - - if (listOfselect2[i]['data'] || listOfselect2[i]['attachSelect']) { - if(listOfselect2[i]['attachSelect']){ - that.ui[listOfselect2[i]['id']].select2({ - placeholder: listOfselect2[i]['placeholder'], - width: '100%' - }); - continue; - } - - if(that.ui[listOfselect2[i]['id']]){ - that.ui[listOfselect2[i]['id']].select2({ - placeholder: listOfselect2[i]['placeholder'], - width: '100%', - data: listOfselect2[i]['data'] - }); - } - - continue; - } else { - if(that.ui[listOfselect2[i]['id']]){ - that.ui[listOfselect2[i]['id']].select2({ - placeholder: listOfselect2[i]['placeholder'], - width: '100%', - data: [] - }); - that.ui[listOfselect2[i]['id']].select2("disable"); - }else{ - continue; - } - - } - - - if (listOfselect2[i]['fetch']) { - if (listOfselect2[i].collection && typeof that.listOfselect2[i].collection === "object") { - that.listOfselect2[i]['collectionFetchLov'] = that.listOfselect2[i].collection - } else if (listOfselect2[i].collection && typeof that.listOfselect2[i].collection === "string") { - that.listOfselect2[i]['collectionFetchLov'] = that[listOfselect2[i]['collection']] - } - - } - - } - - _.each(that.listOfselect2, function(obj, i) { - if(obj['collectionFetchLov']){ - that.listenTo(obj['collectionFetchLov'], "reset", function(collection, response, options) { - if (obj['collectionHasCode']) { - for (var i = 0; i < collection.models.length; i++) { - $.extend(collection.models[i].attributes, { - id: collection.models[i].get(obj['collectionHasCode']) - }) - } - } + }; + + /* + * Converting Include Exclude string + */ + Utils.encodeIncludeExcludeStr = function(arrOrStr,doEncode,token){ + var token = token || Globals.splitToken; + if(doEncode && _.isArray(arrOrStr)){ + return arrOrStr.join(token); + }else if(_.isString(arrOrStr)){ + return arrOrStr.split(token); + } + }; + + Utils.localStorage = { + checkLocalStorage:function(key,value){ + if (typeof(Storage) !== "undefined") { + return this.getLocalStorage(key,value); + } else { + console.log('Sorry! No Web Storage support'); + Utils.cookie.checkCookie(key,value); + } + }, + setLocalStorage:function(key,value){ + localStorage.setItem(key,value); + return {found:false,'value':value}; + }, + getLocalStorage:function(key,value){ + var keyValue = localStorage.getItem(key) + if(!keyValue || keyValue == "undefined"){ + return this.setLocalStorage(key,value); + }else{ + return {found:true,'value':keyValue}; + } + } + + } + Utils.cookie ={ + setCookie:function(cname,cvalue) { + //var d = new Date(); + //d.setTime(d.getTime() + (exdays*24*60*60*1000)); + //var expires = "expires=" + d.toGMTString(); + document.cookie = cname+"="+cvalue+"; " + return {found:false,'value':cvalue}; + }, + getCookie:function(findString) { + var search = findString + "="; + var ca = document.cookie.split(';'); + for(var i=0; i<ca.length; i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1); + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; + }, + checkCookie:function(key,value) { + var findString = getCookie(key); + if (findString != "" || keyValue != "undefined") { + return {found:true,'value':((findString == "undefined")?(undefined):(findString))}; + } else { + return setCookie(key,value); + } + } + } + + Utils.getRandomColor = function getRandomColor(str) { + if(!str) + return "#000"; + var hashCode = function(str) { + var hash = 0; + for (var i = 0; i < str.length; i++) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + return hash; + }; + + var intToRGB = function(i){ + var c = (i & 0x00FFFFFF) + .toString(16) + .toUpperCase(); + + return "00000".substring(0, 6 - c.length) + c; + }; + return "#" +intToRGB(hashCode(str)); + }; + /** + * [genrateSelect2 description] + * @param {[array of object]} listOfselect2 [] + * listOfselect2 = [ + { + id: "select2 id", + placeholder: "placeholder", + collection: "collection", + dataText: 'display text', //in binding for appling name + collectionHasCode: 'collection dosnt have id then pass what you want to show', // if collection dont have id , + modelAttr: 'collection attribute name', + mandatory: false, + nonCrud: getAuditSchemaFieldsName // pass function Name with params (suucess,error,etc) + fetch: true, + data:[] // it will not fetch from collection + }, + {...} + ] + collectionFetchLov // listenTo in your view + * @param {[type]} that [scope of function or view] + * @return {[type]} [description] + */ + Utils.genrateSelect2 =function(listOfselect2,that){ + + for (var i = 0; i < listOfselect2.length; i++) { + + if (listOfselect2[i]['data'] || listOfselect2[i]['attachSelect']) { + if(listOfselect2[i]['attachSelect']){ + that.ui[listOfselect2[i]['id']].select2({ + placeholder: listOfselect2[i]['placeholder'], + width: '100%' + }); + continue; + } + + if(that.ui[listOfselect2[i]['id']]){ + that.ui[listOfselect2[i]['id']].select2({ + placeholder: listOfselect2[i]['placeholder'], + width: '100%', + data: listOfselect2[i]['data'] + }); + } + + continue; + } else { + if(that.ui[listOfselect2[i]['id']]){ + that.ui[listOfselect2[i]['id']].select2({ + placeholder: listOfselect2[i]['placeholder'], + width: '100%', + data: [] + }); + that.ui[listOfselect2[i]['id']].select2("disable"); + }else{ + continue; + } + + } + + + if (listOfselect2[i]['fetch']) { + if (listOfselect2[i].collection && typeof that.listOfselect2[i].collection === "object") { + that.listOfselect2[i]['collectionFetchLov'] = that.listOfselect2[i].collection + } else if (listOfselect2[i].collection && typeof that.listOfselect2[i].collection === "string") { + that.listOfselect2[i]['collectionFetchLov'] = that[listOfselect2[i]['collection']] + } + + } + + } + + _.each(that.listOfselect2, function(obj, i) { + if(obj['collectionFetchLov']){ + that.listenTo(obj['collectionFetchLov'], "reset", function(collection, response, options) { + if (obj['collectionHasCode']) { + for (var i = 0; i < collection.models.length; i++) { + $.extend(collection.models[i].attributes, { + id: collection.models[i].get(obj['collectionHasCode']) + }) + } + } var allowClearFlag = false; if(!obj['mandatory'])allowClearFlag = true var data = _.pluck(collection.models, 'attributes'); @@ -1174,57 +1178,57 @@ define(['require', } }); if(!obj['disabled']){ - that.ui[obj['id']].select2("enable"); + that.ui[obj['id']].select2("enable"); } if (that.model && !that.model.isNew()) { - that.ui[obj['id']].select2('val', that.model.get(obj['modelAttr'])).trigger('change'); + that.ui[obj['id']].select2('val', that.model.get(obj['modelAttr'])).trigger('change'); } }, that); - if(obj['nonCrud']){ - obj['nonCrud'](that.ui[obj['id']]); - }else{ - obj['collectionFetchLov'].fetch({reset:true}); - } - - } - }); - }, - - /* This Method for handling graph unit. - which seperate number from the string and again append to - the string by formatting it - - */ - Utils.graphUnitParse = function(unitVal){ - if(! unitVal){ - return ""; - } - var pattern = /(\d)\s+(?=\d)/g; - var number = unitVal.match(/\d+/g).map(Number); - var numString = number.toString().replace(pattern , '$1'); + if(obj['nonCrud']){ + obj['nonCrud'](that.ui[obj['id']]); + }else{ + obj['collectionFetchLov'].fetch({reset:true}); + } + + } + }); + }, + + /* This Method for handling graph unit. + which seperate number from the string and again append to + the string by formatting it + + */ + Utils.graphUnitParse = function(unitVal){ + if(! unitVal){ + return ""; + } + var pattern = /(\d)\s+(?=\d)/g; + var number = unitVal.match(/\d+/g).map(Number); + var numString = number.toString().replace(pattern , '$1'); var str = unitVal.replace(/\d+/g, '').replace(/\+/g,''); return numString +" " + Utils.getCamelCase(str) + "(s) gap"; - }, - - Utils.getCamelCase = function(str){ - if(!str){ - return ""; - } - var str = str.toLowerCase(); - return str.replace(/(?:^|\s)\w/g, function(match) { - return match.toUpperCase() + }, + + Utils.getCamelCase = function(str){ + if(!str){ + return ""; + } + var str = str.toLowerCase(); + return str.replace(/(?:^|\s)\w/g, function(match) { + return match.toUpperCase() }); - }, - Utils.manipulateValueForAddingAstrik = function(str){ - if(!str){ - return ""; - } - var string = ((str.lastIndexOf('*',0) === 0)) ? str : '*'+str; - string = ((str.lastIndexOf('*', str.length - 1) === str.length - 1)) ? string : string+'*'; - - return string; - }; + }, + Utils.manipulateValueForAddingAstrik = function(str){ + if(!str){ + return ""; + } + var string = ((str.lastIndexOf('*',0) === 0)) ? str : '*'+str; + string = ((str.lastIndexOf('*', str.length - 1) === str.length - 1)) ? string : string+'*'; + + return string; + }; - return Utils; + return Utils; });
