/** * auth.js - keeper of the grounds * Basic bits to verify user login and present * appropriate UI when necessary. */ var authNS = odkmaker.namespace.load('odkmaker.auth'); var controlId = ""; var rowIndex = -1; var currentTabName = ""; var formBuilderLoaded = false; var index = 0; var record_Index = 0; var record_Id = ''; var tmpRow = ""; var tmpHeader = ""; var curPagingNum = 20; var curPagingControl = 1; var emptyData = false; var editting = false; var entityKey = ''; var userPrivilege = 2; // default readOnly privilege var lastInfoColCount = 4; var noControlColCount = 2; var sortFlag = 1; // default descending value for sorting var sortField = ''; var topGroupTree = ''; var curGroupChild = ''; var curGroupTop = ''; var fbconstraints = {}; // form builder controls object var jsonGroupTree = {}; var jsonGroupInputedIndex = {}; var curUploadedMedia = ''; var popup; var dispatchImportKey = ''; var dispatchImportHeaders = []; var removeOptionsObj = []; var dropDownBackUpObj = []; var dropDownQueryObj = []; var availableMobileUnit = 1; var mobileUnitSupport = 1; var mobileUnitLeft = 1; var mobileUnitDataLoad = 0; var addRowNum = 20; var validateMsg = ''; var dispatchKinds = ['@Status','@MobileNumber','@Nickname']; var schedule = '@Schedule'; var dispatchStatus = [sts_pending, sts_sent, sts_schedule, sts_received, sts_viewed, sts_rejected, sts_completed]; var mediaKinds = [mdi_kind_image, mdi_kind_sketch, mdi_kind_signature, mdi_kind_audio, mdi_kind_video, mdi_kind_inputImage, mdi_kind_inputSketch, mdi_kind_inputSignature, mdi_kind_inputAudio, mdi_kind_inputVideo]; var pageNum = 1; var totalRecord = 0; var deleteSelectedRecordsFlg = 0; var timerInterval = 60000; var beginCheckingIndex = 4; var formRecordName = ''; var medias = ''; var lkCheckListIndex = 0; var selectedProjectKey = ''; var projectName = ''; var formId = ''; var formName = ''; var jsonSelect = {}; var jsonScore = {}; var jsonCateScore = {}; var jsonDispatchColor = {}; var dispatchColorKey = ''; var jsonHeadersFull = {}; var mapFieldsSumary = []; var arrHiddenFields = []; var jsonMediaStorage = {}; var jsonLookupDatasource = {}; var jsonLKDS = {}; // lookup datasource var jsonLKAll = {}; var lkGroup = {}; var jsonFTCount = {}; var edittingKey = ''; var recordMapKey = ''; var jsonImportMobiles = {}; var jsonMInfo = {}; var jsonCurrency = {}; var arrScoreTableQuestion = []; //------------- Dispatch Recurring ------------- var jsonDaysInWeek = []; var removeRecurringFlg = false; // ------------- Fixed table ------------- var jsonFTLKDS = {}; var jsonFixedTable = {}; var jsonCalFTable = {}; var jsonFTData = {}; var curFTable = ''; var ftAction = 'view'; //------------- Fixed table ------------- var facingsCurRow = {}; var facingsStoreIdFilter = ''; var jsonFacingsData = {}; // export config variables var unitConfigKey = ''; var unitConfigJson= {}; // display config variables var displaySettingUnitKey = ''; var displaySettingUnitConfig = {}; var totalImportRecord = 0; var posisionIndex = 0; var queryLKFtableFlg = false; var osm_canvas; var jsonRecordGroup = {}; var jsonFieldValue = []; var jsonFieldObj = {}; var curLoop = 1; var groupEltDeleteFlg = true; var timeZone = ' UTC'; var lookupTableObj = {}; var lookupRecordId = ""; var lookupAction = "submit"; var lookupBlobKey = ''; var lookupOldBlob = ''; var lookupTotalRow = ''; // The current progress position row var lookupCurrentPosition = '0'; var lookupUploaded = false; var emailReportFlg = false; var changeNewFormFlg = false; var dispatchViewFlg = false; var dataViewFlg = false; var dispatchAddFirstFlg = false; var filterFlag = false; var needToConfirm = false; var needToConfirmFV = false; var imageLabelFlg = false; var dispatchFlg = false; var closedSocket = true; var fvWatchDog = false; var approvalOptionPending = 'pending'; //var approvalOptionPending_us_date = 'pending un_date'; var approvalOptionApproved_us_date = 'approved un_date'; var approvalOptionRejected_us_date = 'rejected un_date'; var approvalOptionTextPending = 'pending '; //var approvalOptionTextPending_us_date = 'pending '; var approvalOptionTextApproved_us_date = 'approved '; var approvalOptionTextRejected_us_date = 'rejected '; var LOOKUP_DS_MAX_SIZE = (3 * 1024 * 1024) ;//3072000; // 3Mb // MIN/MAX values var LONG_MIN_VALUE = -9223372036854775807; var LONG_MAX_VALUE = 9223372036854775807; var DECIMAL_MIN_VALUE = -49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; var DECIMAL_MAX_VALUE = 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; //Mobile branding constant var FINAL_PARAM_TABLET_LOGO = "tabletLogo"; var FINAL_PARAM_MOBILE_BANNER_COLOR = "baner_mobile_background_color"; var FINAL_PARAM_SMARTPHONE_BRANDING_TEXT = "smartphone_branding_text"; var FINAL_PARAM_SMARTPHONE_BRANDING_TEXT_COLOR = "smartphone_branding_text_color"; function setDirtyFlag(isFV) { if(isFV){ needToConfirmFV = true; }else{ needToConfirm = true; } } function releaseDirtyFlag(isFV) { if(isFV){ needToConfirmFV = false; }else{ needToConfirm = false; } } window.onbeforeunload = confirmExit; function confirmExit() { if (needToConfirm){ return lbl_etfmcutlauc; } } var isIE = function(){ var ie = false; var ua = navigator.userAgent.toLowerCase(); if ( ua.indexOf( "opera" ) != -1 ) { browserName = "opera"; } else if ( ua.indexOf( "msie" ) != -1 ) { browserName = "msie"; ie = true; } else if ( ua.indexOf( "edge" ) != -1 ) { browserName = "edge"; ie = true; } else if ( ua.indexOf( "trident" ) != -1 ) { browserName = "trident"; ie = true; } else if ( ua.indexOf( "safari" ) != -1 ) { browserName = "safari"; } else if ( ua.indexOf( "mozilla" ) != -1 ) { if ( ua.indexOf( "firefox" ) != -1 ) { browserName = "firefox"; } else { browserName = "mozilla"; } } return ie; } var getControlUploadSize = function(control){ var uploadSize = 0; if(isIE()) { // IE //uploadSize = control._input.document.fileSize; } else { // Netscape/Firefox/Opera uploadSize = control._input.files[0].fileSize; } if(uploadSize == undefined) uploadSize = 0; return uploadSize; } var loadCounter = function(){ $.ajax({ url: '/homepage/savingsInfo', dataType: 'json', type: 'GET', data: '{}', cache: false, complete: function() { }, success: function(response, status) { $('.footer .parameter_more .savingscash').text(response.savingscash); $('.footer .parameter_more .savingsco2').text(response.savingsco2); $('.footer .parameter_more .savingstree').text(response.savingstree); }, error: function(request, status, error) { if(getStatus(request) == 401){ jAlert(msg_read_permission_required); } } }); } /************************************************************************************ * Get query string (from parameters of HTML) * Ripped from function getQuerystring(key) in auth.js ************************************************************************************/ function getQuerystring(key) { key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regex = new RegExp("[\\?&]" + key + "=([^]*)"); var qs = regex.exec(window.location.href); if(qs == null) return ''; else return qs[1].replace(/%20/g," "); } /************************************************************************************ * Function for tab bar * start ************************************************************************************/ var tabChange = function(tabActive){ //Channel if(tabActive == currentTabName) { if(tabActive == '.homepage'){ $('.viewDataLink').removeClass('selected').end(); } // return false; } if(tabActive == '.inputDataLink'){ if(!$('.webapp_main_content').hasClass(CONST_CSS_CLASS_HIDE_SESSION)){ $('.webapp_main_content').addClass(CONST_CSS_CLASS_HIDE_SESSION).end(); } if(!$('.footer').hasClass('modal')){ //$('.footer').addClass('modal').end(); } $('.formView').removeClass(CONST_CSS_CLASS_HIDE_SESSION).end(); } if(tabActive != '.homepage'){ $(tabActive).addClass('selected').end(); } $('.webapp_main_content').empty(); currentTabName = tabActive; return true; }; /************************************************************************************ * Function for tab bar * end ************************************************************************************/ /************************************************************************************ * Function for form view * start ************************************************************************************/ var formView = function(event) { _.each($('.header .menu ul.submenu'), function(item){ $('.submenu').slideUp('fast'); }); }; /************************************************************************************ * Function for form view * End ************************************************************************************/ $('.inputDataLink').click(function(event) { if(tabChange('.inputDataLink')){ formView(event); } }); /** * Init all component on window loading */ function initOnWindowLoad4WA() { if(!validateUserSession()){ return; } // Initialize all data for Web Apps initAll4PrintDataWebApps(); // Init event for WebApps initEvent4HighlightLocation(); // Fix bug 0020771: Show icon "Save&Send" and "Save&Schedule" on menu after log on Web App by Mobile Unit try { // Process show/hide selected buttons var isDispatchRequest = getQuerystring('isDispatchRequest'); writeToLogInfoRequired('isDispatchRequest : ' + isDispatchRequest); var objQueryIcons = $('#fvmain_menu li.liFvSaveAndSend,#fvmain_menu li.liFvSaveAndSchedule'); if (isDispatchRequest === CONST_VALUE_TRUE_STR) { // Show the Show icon "Save&Send" and "Save&Schedule" objQueryIcons.css(CONST_CSS_KEY_DISPLAY, 'inline-block'); // CO-2377 if(webAppDispatch) { $('#fvmain_menu li.liFvSaveLink').addClass('dispatchFormView'); } // CO-2377 } else { objQueryIcons.hide(); $('#fvmain_menu li.liFvSaveLink').removeClass('dispatchFormView'); // CO-2377 } if(false == canSchedule) { $('#fvmain_menu li.liFvSaveAndSchedule').hide(); $('#fvmain_menu li.liFvSaveLink').removeClass('dispatchFormView'); // CO-2377 } } catch (e) {} } var signinSuccessful = function(response, status) { $('.accountStatus') .empty() .append(lbl_account + ': ' + authNS.currentUser.Account + ' | Mobile Number: ' + authNS.currentUser.MobileNumber + ' | ' + lbl_signout + '') .fadeIn('slow'); $('.accountStatus').find('.logoutLink').click(function(event){ /* fix bug auto login when use link /webapp parent.$.fancybox.close();*/ parent.window.location.replace("/formview/logout"); }) isLogoExist(); if(tabChange('.inputDataLink')){ formView(); } fvMainMenuGraphicsStyleUpdate(); initMainMenuIcon(); initMMBIcon(authNS.currentUser.mb_mbb_icon_order, '.fvWorkspaceScrollArea .mainMenuBarScroll'); initFVMMBIcon(); if(authNS.currentUser.assMainMenuGraphicsStyle == 'Banner'){ //$('.getStartedInfo .mainMenuBarScroll').addClass(CONST_CSS_CLASS_HIDE_SESSION); } if(authNS.currentUser && authNS.currentUser.assShowDisclaimer){ var html = '