/** * form_record.js * Process for printing form record (from version 1.2) */ // Prototype for startsWith string function String.prototype.startsWith = function(prefix) { return this.indexOf(prefix) === 0; } // Prototype for endsWith string function String.prototype.endsWith = function(suffix) { return this.match(suffix+"$") == suffix; }; // Append the elements of the array a to this array Array.prototype.append = function(a) { Array.prototype.push.apply(this, a); } // Get browser name information var browserNameGlobal = getBrowserInfo(); var MAXIMUM_VALUE = Number.MAX_VALUE; var MINIMUM_VALUE = -(Number.MAX_VALUE / 2); var DEFAULT_ZOOM_FOR_ONE_MARKER = 15; // Adjust max-width image //var MAX_WIDTH_IMAGE = 140; // In unit milimetre var MAX_WIDTH_IMAGE = 155; // In unit milimetre var MAX_WIDTH_CONTENT = 170; // In unit milimetre // The constants getting from PageSetting about scale image (100%, 66%, ...) var SCALE_IMAGE_VALUE_NO_SCALE = ''; var SCALE_IMAGE_VALUE14 = '1/4'; var SCALE_IMAGE_VALUE13 = '1/3'; var SCALE_IMAGE_VALUE12 = '1/2'; var SCALE_IMAGE_VALUE23 = '2/3'; // The time between checking status of Print Data // (used in download only 1 file, in PrintPreview/Print Merchandizing Account) // (default is 5s) var WAITING_TIME_BETWEEN_CHECKING = 5000; // 5000 // The time between checking status of PrintData (Multiple Records) // (between at least 7s seconds for make sure download successful) // used in Bulk Download/Print Merchandizing Facings var WAITING_TIME_BETWEEN_CHECKING_4MULTI_FILES = 10000; //7000; // The padding value used in Grid/Table/ScoreCard (PCA-190) var PADDING_LEFT_INVOICE_TABLE_GENERAL = 5; //The constants value for Label Shading (1, 2, 3) var LABEL_CONSTANTS_VALUE_OPTION_BUILD_FORM_LINES = '1'; var LABEL_CONSTANTS_VALUE_OPTION_BUILD_FORM_SHADE = '2'; var LABEL_CONSTANTS_VALUE_OPTION_BUILD_FORM_NO_LINES_AND_SHADING = '3'; var LABEL_CONSTANTS_VALUE_OPTION_BUILD_FORM_APPEARANCE_DEFAULT = 'Default'; // Appearance Default var LABEL_CONSTANTS_VALUE_OPTION_BUILD_FORM_APPEARANCE_CUSTOM = 'Custom'; // Appearance Custom // PCA-212 : Print Preview/PDF support for Text Calculations var FIXED_TABLE_CALC_SHOW_TEXT_MOBILE = 'fixedTable_showAsTextMobile'; // showAsTextMobile var FIXED_TABLE_CALC_MOBILE_TEXT_ALIGN = 'fixedTable_mobileTextAlign'; // mobileTextAlign var CALCULATION_TEXT_MOBILE_ALIGNMENT_LEFT = "Left"; var CALCULATION_TEXT_MOBILE_ALIGNMENT_RIGHT = "Right"; var CALCULATION_TEXT_MOBILE_ALIGNMENT_CENTER = "Center"; // The value of Grid Type // PCA-174 (PDF/Excel Reports support for New Grid Type) var GRID_TYPE_ROW_BASED_JAVASCRIPT = "1"; // Row Based var GRID_TYPE_COLUMN_BASED_JAVASCRIPT = "2"; // Column Based var GRID_TYPE_CENTER_GRID_JAVASCRIPT = "3"; // Center grid type // PCA-174 (PDF/Excel Reports support for New Grid Type) // The constants value for Table/Grid Shading (1,2,3) // The variable in $control will be 'shadedKind' var TABLE_CONSTANTS_VALUE_OPTION_BF_TOP_ROW_ONLY = "1"; // Top Row Only var TABLE_CONSTANTS_VALUE_OPTION_BF_FIRST_COL_ONLY = "2"; // First Column Only var TABLE_CONSTANTS_VALUE_OPTION_BF_EVERY_OTHER_COL = "3"; // Every Other Column // PCA-266 Print Preview/PDF support for color option in Grids, questionnaires and Tables // The constants about we are using Appearance ()Custom + []Shaded headings var CONTROL_APPEARANCE_NO_SHADING_CHECKBOX = "NO SHADING CHECKBOX"; // PCA-174: PDF/Excel Reports support for New Grid Type // The constants about columnSpaceType in Grid/Table/Questionnaire var CONTAINER_COLUMN_SPACE_TYPE_EQUALLY_SPACE_COLUMNS = "0"; // Equally space columns var CONTAINER_COLUMN_SPACE_TYPE_USE_CAPTION_LENGTH = "1"; // Use caption length var CONTAINER_COLUMN_SPACE_TYPE_ADJUST_COLUMN_WIDTH = "2"; // Adjust column width //The default shading background color with OLD FORM (#E9E9E9) var DEFAULT_SHADING_BACKGROUND_COLOR_4_OLD_FORMS = '#E9E9E9'; // Apply Justification for all controls var JUSTIFICATION_CONTROL_VALUE_LEFT = '0'; var JUSTIFICATION_CONTROL_VALUE_CENTER = '1'; var JUSTIFICATION_CONTROL_VALUE_RIGHT = '2'; // PCA-406: Report Settings [] show buttons and check boxes in PDF same as PDF // The constant value for showPicturesOnTheirOwnPageValue //var SHOW_PICTURE_ON_THEIR_OWN_PAGE_1 = "OnePerPage"; //var SHOW_PICTURE_ON_THEIR_OWN_PAGE_2 = "TwoPerPage"; // List of item we need refresh layout after finishing render GUI var listSelectControlsNeedRefreshInPDF = new Array(); // Global variable for POD (Extract from PODUtils.java) var POD_CHILDREN_NAMES_KEY = "~ChildrenNames"; var POD_SHADE_KIND_KEY = "~shadedKind"; var POD_COLUMN_WEIGHT_KEY = "~withFormat4ColumnWeight"; var POD_NAME_KEY = "~name"; // The POD property : @PODQuantity var POD_QUANTITY = "@PODQuantity"; // The POD property : @PODDamage var POD_DAMAGE = "@PODDamage"; // The POD property : @PODOver var POD_OVER = "@PODOver"; // The POD property : @PODTableName var POD_TABLE_NAME = "@PODTableName"; // The POD property : @Header var POD_HEADER = "@Header"; // The POD property : @Caption var POD_HEADER_CAPTION = "@Caption"; // The POD property : @TopTable var POD_TOP_TABLE = "@TopTable"; // The POD property : @OSDReport var POD_OSD_REPORT = "@OSDReport"; // The POD property : @DeliverTable var POD_DELIVER_TABLE = "@DeliverTable"; // The POD property : @Rows var POD_ROWS = "@Rows"; // The POD Header : Damaged/Rejected/Comment var POD_HEADER_DAMAGE = "S2__Damaged"; var POD_HEADER_REJECT = "S2__Rejected"; var POD_HEADER_OVER = "S2__Over"; var POD_HEADER_COMMENT = "S2__Comment"; var POD_HEADER_DELIVER = "S2__Deliver"; var POD_HEADER_PICKUP = "S2__Pickup"; var POD_HEADER_QTY = "S2__Qty"; var POD_HEADER_ACTUAL = "S2__Actual"; var POD_HEADER_CHANGE = "S2__Change"; var POD_HEADER_STATUS = "S2__Status"; var POD_HEADER_AUTO_ID = "S2__AutoID"; // The suffix values of POD var POD_SUFFIX_DAMAGED = "__Damaged"; var POD_SUFFIX_REJECTED = "__Rejected"; var POD_SUFFIX_DELIVER = "__Deliver"; var POD_SUFFIX_PICKUP = "__Pickup"; var POD_SUFFIX_COMMENT = "__Comment"; var POD_SUFFIX_SHORT = "__Short"; var POD_SUFFIX_OVER = "__Over"; var POD_SUFFIX_QTY = "__Qty"; var POD_SUFFIX_ACTUAL = "__Actual"; var POD_SUFFIX_CHANGE = "__Change"; var POD_SUFFIX_STATUS = "__Status"; var POD_SUFFIX_AUTOID = "__AutoID"; var POD_CHECKBOX_YES_VALUE = "yes"; var POD_CHECKBOX_YES_CAPTION = "Yes"; // The status value of manifest table rows var POD_STATUS_MANIFEST_EMPTY = ""; var POD_STATUS_MANIFEST_0 = "0"; var POD_STATUS_MANIFEST_16 = "16"; var POD_STATUS_HIDDEN_32 = "32"; // Control for applying : Answer Color for PrintPreview/Standard PDF var CONTROL_APPLY_ANSWER_COLOR_GUI_PREVIEW_PDF = 'inputText,inputNumeric,Decimal,Integer,Percent,inputLocation,inputNumbering,inputDate,Date,Time,Date time,inputBarcode,inputEmailReport,inputSecureEmailReport,inputLookup,inputLFBluetooth,inputCalculate,inputNFC,inputCounter,inputTrends,inputPayment,inputNewPayment,'; // Control not apply remove border answer var CONTROL_NOT_APPLY_REMOVE_BORDER_ANSWER_PREVIEW_PDF = 'inputPageBreak,group,ctrlTable,ctrlPOD,inputFacingTable,ctrlScoreTable,ctrlGrid,inputLabelDummy4Grid,'; // Add image for ChooseOne/SelectMultiple Option var LIST_IMAGE_OPTIONS_4_PREVIEW = "~listImageOptions~"; /** * Process printing data */ function processPrintData() { // Apply print status for osm_map_region $('#osm_map_region').removeClass('osm_map_region_print'); // Put the standard page size A4 if (browserNameGlobal == 'ie') { // Control in CSS } else if (browserNameGlobal == 'chrome') { $('#PrintRegionData').addClass('PrintRegionData4Chrome'); } else if (browserNameGlobal == 'firefox') { // Control in CSS } else if (browserNameGlobal == 'safari') { // Process browser of Chrome and Safari $('#PrintRegionData').addClass('PrintRegionData4Safari'); } // Hide all dash-line for breaking pages (previous hide for printing) $('.dash_line_for_separating_between_pages').hide(); // Hide all [PageNumber] for printing $('.page_number_for_printview_html').hide(); // Hide the line header $('#idLineFormatHeaderPrintPreview').addClass('hideLineFormatHeader'); // Show map and markers in printing mode showMapAndMarkers(true); $('.jqmOverlay:visible').css('opacity', 0); window.print(); // Make sure the print okie after restoring the GUI in normal print view (HTML) setTimeout('restoreGUITimeout();', 1000); } // The list list all of Decimal Fields (Decimal questions/Calculation related Decimal/...) var listAllDecimalFields = null; /** * Process HTML content for current print form record */ function processHTMLPrintFormRecord() { // The flag about click menu [Excel Report] var isExcelReport = getQuerystring('isExcelReport'); // Check if we are in creating PDF (menu PDF Report) var isClickMenuPdf = getQuerystring(CONST_KEY_ISCLICKMENUPDF); var cacheIdValue = getQuerystring('cacheId'); // The task info key (only used in Backends) var taskInfoKey = getQuerystring('taskInfoKey'); // Getting data from server (store in session) waitForDataLoading(true); // Reset the value of global variables (for Appearance) // PCA-266 Print Preview/PDF support for color option in Grids, questionnaires and Tables indexOfAppearanceShadingHeadings = 0; builderAppearanceShadingHeadings = new Array(); // PCA-299: PDF/Print Preview support for Down/Across option for ChooseOne, SelectMultiple & Score // Rest the list of Controls need refresh layout in PDF Preview listSelectControlsNeedRefreshInPDF = new Array(); // Special treating with data is from menu [Edit] > PDF Preview (ReadOnly user) var isRequestFromReadOnlyAndView = getQuerystring('isRequestFromReadOnlyAndView'); if (!isRequestFromReadOnlyAndView || isRequestFromReadOnlyAndView === null) { isRequestFromReadOnlyAndView = ''; } // Get data from server $.ajax({ url : '/dataview/print', dataType : 'json', type : 'GET', data : { cacheId : cacheIdValue ,taskInfoKey : taskInfoKey ,isRequestFromReadOnlyAndView : isRequestFromReadOnlyAndView ,isExcelReport : isExcelReport }, cache : false, complete : function() { //waitForDataLoading(false); }, success : function(response, status) { // CO-2078 var ppvWebsiteIconStyles = ''; switch(!undefined) {// CO-2050 case (response.website_icon_color != undefined) : // CO-2051 Add custom style for icon color ppvWebsiteIconStyles += '.svg-icon svg path {fill: ' + response.website_icon_color + ';}'; ppvWebsiteIconStyles += '.svg-label {color: ' + response.website_icon_color + ';}'; // CO-2051 Add custom style for icon color // CO-2050 // CO-2078 case (response.website_active_icon_color != undefined) : // CO-2051 Add custom style for icon color ppvWebsiteIconStyles += '.svgIconContainer:hover .svg-label {color: ' + response.website_active_icon_color + ';}'; ppvWebsiteIconStyles += '.svgIconContainer:hover .svg-icon svg path {fill: ' + response.website_active_icon_color + ';}'; ppvWebsiteIconStyles += '.svgIconContainer .svg-label.selected {color: ' + response.website_active_icon_color + ';}'; $('#ppvWebsiteIconStyles').html(ppvWebsiteIconStyles); // CO-2051 Add custom style for icon color } // CO-2078 // Process update constants value (only affected on localhost for developing) updateConstantsValueOnly4LocalhostFAST(); // Update flag glbHashObject['isUsingBackends4PR'] glbHashObject['isUsingBackends4PR'] = response.isUsingBackends4PR; writeToLogInfo('Setting flag using backend : ' + glbHashObject['isUsingBackends4PR']); // Update global variable for Shading in PDF (same as Shading in WebApps) updateGlobalVariable4ShaddingAndButtonTextBuildFormsInPDF(response); // Checking the error status if (response.error_status !== undefined && response.error_status == 'INVALID_PRINT_RECORD') { jAlert(msg_print_record_item_invalid, null, function() { window.close(); }); return; } // Fill data getting from server if (response.result == false) { jAlert(msg_unknown_error, null, function() { window.close(); }); return; } var pageSetting = response.page_settings; if (pageSetting == null) { jAlert(msg_unknown_error, null, function() { window.close(); }); return; } glbHashObject['print_page_settings'] = pageSetting; glbHashObject['url_server'] = response.url_server; glbHashObject['response_object'] = response; glbHashObject['is_premier_google_account'] = response['google.is_premier_account']; // Update list of Decimal fields listAllDecimalFields = glbHashObject['response_object'].listAllDecimalFields; // Assign privilege value (for checking ReadOnly user later) if (response.userPrivilege !== undefined && response.userPrivilege !== null) { glbHashObject['userPrivilege'] = response.userPrivilege; } else { glbHashObject['userPrivilege'] = ''; } // Store current form id, form name $('#form_id').val(response.formId); $('#form_name').val(response.form_name); $('#projectKey').val(response.projectId); // Get setting for PDF (Standard Report Template/Custom Report Template) var isShowExcelScreen = false; if (isExcelReport != undefined && isExcelReport != null && isExcelReport == CONST_VALUE_TRUE_STR && !(isClickMenuPdf === CONST_VALUE_TRUE_STR && (pageSetting.templateUseWhenCreatePdf === CREATE_PDF_BY_STANDARD_REPORT_TEMLATE || pageSetting.templateUseWhenCreatePdf === undefined)) ) { isShowExcelScreen = true; } else { // Check Report Settings if (isClickMenuPdf === CONST_VALUE_TRUE_STR && pageSetting.templateUseWhenCreatePdf == CREATE_PDF_BY_CUSTOM_REPORT_TEMLATE) { isShowExcelScreen = true; } } // Special treating with data is from menu [Edit] > PDF Preview (ReadOnly user) // => Show Standard Report PDF Print Preview with default settings if (isRequestFromReadOnlyAndView === CONST_VALUE_TRUE_STR) { isShowExcelScreen = false; } // Special processing for Excel Report page if (isShowExcelScreen) { // Only process this function for the first time // if (glbHashObject['loading_excel_template_html_content'] == undefined // || glbHashObject['loading_excel_template_html_content'] == null // || glbHashObject['loading_excel_template_html_content'] == false) { // Clear all data of print view (in Excel Report) $('#PrintRegionData').empty(); processExcelReport(response); // In Excel Report screen, we will move the bottom menu controls into main region // Bottom menu controls include [Email Save Settings Cancel], Powered by www.doForms.com // Move #bottomMenuId into #PrintRegionData // $('#bottomMenuId').appendTo('#PrintRegionData'); // $('#bottomPoweredId').appendTo('#PrintRegionData'); // Modify about CSS/style $('#bottomMenuId').css('padding-top', '0px'); $('#footerFirstPadding').hide(); $('#bottomPoweredId').css('margin-left', '0px'); $('#bottomMenuId').css('margin-left', '1in'); $('#bottomPoweredId').css('margin-left', '1in'); $('#PrintRegionData').css('margin', '0.5in 1in 0in'); // Make double font size 2X $('.double2XFontSize').css('font-size', '22px'); // Setting the flag value for ignoring loading data later glbHashObject['loading_excel_template_html_content'] = true; // Process show/hide [Convert to PDF] //if (false === isVersion5_0()) { $('.processConvert2Pdf').hide(); } // Show all button related ExcelTemplate report $('.btnPrint_EmailExcelTemplate,.btnPrint_ExcelTemplateSave,.btnPrint_EmailPageSetting,.btnPrint_Close') .removeClass('hiddenMenuItem'); // Hide all button related Pdf Report $('.btnPrint_Submit,.btnPrint_Email,.btnPrint_Save') .addClass('hiddenMenuItem'); // Hide all button in the bottom of page. $('.menuItem4PrintPreview#bottomMenuId').addClass('hiddenMenuItem'); } // Apply font title for Custom Template $('#PrintRegionData .form_title_region').addClass('form_title_region_ORIGINAL'); callFormLoadedEvents(); setTimeout(function(){ $('#PrintRegionData').append('
'); var observer = new MutationObserver(reportFormResizedWithSelector); $('body.print_preview_body #PrintRegionData > *').each(function (index, element) { observer.observe(element, {attributes: true, attributeFilter: ['style']}); }); reportFormResizedWithSelector(); }, 1000); waitForDataLoading(false); return; } else { // Show the bottom menu items (main menu) $('.menuItem4PrintPreview#bottomMenuId').removeClass('hiddenMenuItem') // Hide all menu related to Excel Report feature //$('.btnPrint_ExcelTemplate, .btnPrint_EmailExcelTemplate').hide(); // Show all button related Pdf Report $('.btnPrint_Submit,.btnPrint_Email,.btnPrint_Save,.btnPrint_EmailPageSetting,.btnPrint_Close') .removeClass('hiddenMenuItem'); // Hide all button related ExcelTemplate report $('.btnPrint_EmailExcelTemplate,.btnPrint_ExcelTemplateSave') .addClass('hiddenMenuItem'); $('#bottomMenuId').css('margin-left', '0in'); // $('#bottomPoweredId').css('margin-left', '10px'); // Remove margin-left => resolve problem with bototm scrollbar $('#footerFirstPadding').show(); // Restore css in normal pdf layout $('#PrintRegionData').css('margin', '0.5in 1in 1in'); // Restore font size 1X $('.double2XFontSize').css('font-size', '11px'); // Apply font title for Standard Template $('#PrintRegionData .form_title_region').removeClass('form_title_region_ORIGINAL'); } // Special treating with data is from menu [Edit] > PDF Preview (ReadOnly user) // => Show Standard Report PDF Print Preview with default settings // Hide all menu button, except the button Cancel if (isRequestFromReadOnlyAndView === CONST_VALUE_TRUE_STR) { $('.menuItem4PrintPreview').find('.modalButton:not(.btnPrint_Close)').hide(); } // Clear all data of print view $('#PrintRegionData').empty(); // Reset the global values glbHashObject['put_block_left_status'] = true; // Update the DOCUMENT_HEIGHT based on current browser updateDocumentHeight(); // Process HTML data based on page_settings var htmlData = new Array(); var dataAll = response.DataAll_Result; if (dataAll == undefined || dataAll == null) { jAlert(msg_unknown_error); return; } // The list question after PageBreak question (based on Report Settings) var listQuestionAfterPageBreak = response.listQuestionAfterPageBreak; // The list question that is the first item inside Group (based on Report Settings) var listFirstItemInsideGroup = response.listFirstItemInsideGroup; // The mapping of field name/top group name, only using for page break var topGroupMapping4PageBreak = response.topGroupMapping4PageBreak; // PCA-406: Report Settings [] show buttons and check boxes in PDF same as PDF // Extract questions inside TableScore into special zone for using later //dataAll = processTableScoreDataAll(dataAll, response.TableScoreMappingData, pageSetting); htmlData.push('
'); var hideLogo = getQuerystring('hideLogo'); if(hideLogo == 'true'){ hideLogo = true; }else{ hideLogo = false; } // Adding logo, Form Title, Header Block (Record Name, Mobile Device Number, Date Created) if (response.page_settings.display_logo == true && !hideLogo) { var logoTemplate = '

#logo_path#

'; htmlData.push(logoTemplate.replace('#logo_path#', '') ); } // Add title based on []Display form name setting if (pageSetting.display_form_name === true) { var formTitleTemplate = '

#form_name#

'; // Apply tag
into Print/PDF //htmlData.push(formTitleTemplate.replace('#form_name#', replaceTagBR2LineFeed(response.form_name))); htmlData.push(formTitleTemplate.replace('#form_name#', response.form_name)); } // CO-1066: Show/Hide footer message if (true == pageSetting.displayFooterMessage) { $('#bottomPoweredId').css('display', ''); } else{ $('#bottomPoweredId').css('display', 'none'); } // PCA-180: PDF support for Shading and Spacing //htmlData.push(createHeaderBlock(response.header_block)); if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { // PCA-406: Report Settings [] show buttons and check boxes in PDF same as PDF //htmlData.push(createHeaderBlockSHADING(response.header_block, pageSetting.two_column_format)); } else { htmlData.push(createHeaderBlock(response.header_block)); } htmlData.push('
'); // Put header data into print region $('#PrintRegionData').append(htmlData.join('')); var length = dataAll.length; var tableLayout = new Object(); tableLayout.start = ''; tableLayout.end = '
'; tableLayout.center_separator_column = '  '; tableLayout.count = 0; // The list of table in 1 column layout var listTable = new Array(); // The list of blocks in 2 column layout var listBlocks = new Array(); // Reset pageNumber4PrintPreviewCounter pageNumber4PrintPreviewCounter = 1; // The list of Markers var printPageMarkers = new Array(); var hasExistMap = false; // Apply Compability > Do not show the repeatable caption in Report Settings var previousData = null; var previousIsForcePageBreak = false; for (var i = 0; i < length; i++) { var data = dataAll[i]; // Fix error when not defined of name/value/hints/header if (data['name'] === undefined || (data['pageBreak'] != undefined && data['pageBreak'].indexOf('-hidden') > 0)) { // CO-3243 continue; } // Set default value in case of undefined if (data['header'] === undefined) { data['header'] = ''; } if (data['hints'] === undefined) { data['hints'] = ''; } if (data[CONST_VALUE] === undefined) { data[CONST_VALUE] = ''; } // Create block data based on it's type // var header = replaceTagBR2LineFeed(data['header']); // var hints = replaceTagBR2LineFeed(data['hints']); // Apply tag
into Print/PDF var header = data['header']; var hints = data['hints']; var value = data[CONST_VALUE]; var name = data['name']; var orgName = name.replace(/\(.+/g, ''); // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { if (data['type'] === CONST_CTRL_TYPE_GROUP) { // Do nothing because it's group } else { if (pageSetting.display_data_name === true) { header = orgName; } else { // Force showing GroupTail for question inside Group // (in Compatibility Mode + Do not Show Group sections) // Apply Compability > Do not show the repeatable caption in Report Settings if (isVersion(VERSION_COMPABILITY_DONOT_SHOW_GROUP_CAPTION) && pageSetting.isCompatibilityMode === true && pageSetting.isCompatibilityDontShowGroupCpt === true ) { // Do nothing for Group header } else { // Normal cases var groupTailLength = name.length - orgName.length; if (groupTailLength > 0) { header = header.substring(0, header.length - groupTailLength); } } // var groupTailLength = name.length - orgName.length; // if (groupTailLength > 0) { // header = header.substring(0, header.length - groupTailLength); // } } } // Ignore the question with header == '' + value == '' + hints == '' // Special treating with Questionnaire (ctrlScoreTable) if (header === '' && hints === '' && value === '' && data['type'] !== CONST_CTRL_TYPE_CTRLSCORETABLE && data['type'] !== 'inputLabel' ) { continue; } } var caption = getDisplayHeader(header, false); switch (data['type']) { case 'inputLabel' : // PCA-214 (Apply label coloring for PDF) //block = createLabelBlock(data['header'], hints, value, data['alignment'], pageSetting.two_column_format, data); // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { // CO-262: Blank Labels in PDF's block = createLabelBlockSHADING(data['header'], hints, value, data['alignment'], pageSetting.two_column_format, data, pageSetting); } else { block = createLabelBlock(data['header'], hints, value, data['alignment'], pageSetting.two_column_format, data); } if (block === '') { continue; } break; case CONST_CTRL_TYPE_INPUTACTION : block = createPDFBlockSHADING(header, hints, value, data, pageSetting); break; // Fix bug 0023688: Report Settings - Forward, Payments are not displayed in report although they are checked in field list // case CONST_CTRL_TYPE_INPUTPAYMENT : // // Do nothing // continue; case mdi_kind_inputMedia : case mdi_kind_inputImage : case mdi_kind_image : case mdi_kind_inputSketch : case mdi_kind_sketch : case CONST_CTRL_TYPE_IMAGE_VIEWER : // PCA-180: PDF support for Shading and Spacing //block = createImageBlock(caption, hints, value); if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { var url_server = response.url_server; block = createImageBlockSHADING(header, hints, value, data, pageSetting, url_server); } else { block = createImageBlock(caption, hints, value); } break; case mdi_kind_inputSignature : case mdi_kind_signature : // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createSignatureBlockSHADING(header, hints, value, data, pageSetting); } else { block = createImageBlock(caption, hints, value); } break; case mdi_kind_audio : case mdi_kind_inputAudio : // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createAudioBlockSHADING(header, hints, value, data); break; } // With old version, we will create general block case mdi_kind_video : case mdi_kind_inputVideo : // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createVideoBlockSHADING(header, hints, value, data); break; } // With old version, we will create general block case CONST_CTRL_TYPE_INPUTATTACHMENT: if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createAttachmentBlockSHADING(header, hints, value, data); } else { block = createAttachmentBlock(caption, hints, value); } break; case CONST_CTRL_TYPE_INPUTLOCATION : hasExistMap = true; caption = getDisplayHeader(header, true); // PCA-245: Embed static maps into PDF/Excel Template //block = createLocationBlock(caption, hints, value); if (isVersion(VERSION_EMBBED_STATIC_MAP_PDF_EXCEL)) { //block = createLocationBlock4EmbbedGPSImage(caption, hints, value, data, pageSetting); block = createLocationBlockSHADING(header, hints, value, data, pageSetting); } else { block = createLocationBlock(caption, hints, value); } // Process for adding new marker var lat = value.lat; var lng = value.lng; if (lat != null && lat != undefined && lat != '' && lat != 'no-gps' && lng != null && lng != undefined && lng != '' && lng != 'no-gps') { printPageMarkers.push(value); } break; case CONST_CTRL_TYPE_INPUTSELECTMANY : // PCA-180: PDF support for Shading and Spacing //block = createSelectMultipleBlock1(caption, hints, value, data, response.SelectionsDataMappingInCaptions); if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createSelectGeneralBlockSHADING(header, hints, value, data , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting ); } else { block = createSelectMultipleBlock1(caption, hints, value, data, response.SelectionsDataMappingInCaptions); } break; case CONST_CTRL_TYPE_INPUTSELECTONE : case CONST_CTRL_TYPE_INPUTSCOREONE : // PCA-180: PDF support for Shading and Spacing //block = createSelectMultipleBlock1(caption, hints, value, data, response.SelectionsDataMappingInCaptions); if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { var isShowAsSlider = false; if(isVersion(VERSION_CHOOSE_ONE_SLIDER)){ if(data.optionKind == CONST_CHOOSE_ONE_SWITCH){ isShowAsSlider = true; } } if(isShowAsSlider){ block = createSelectSliderBlockSHADING(header, hints, value, data , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting ); }else{ if ((data.type === CONST_CTRL_TYPE_INPUTSELECTONE || data.type === CONST_CTRL_TYPE_INPUTSCOREONE) && data.displayType === CONST_DROPDOWN) { // PCA-587: Ability to select the answer as displayed to the mobile user, or the underlying_value for Choose One, Score, Select Multiple in Standard PDF/Excel reports if (isVersion(VERSION_SHOWING_SELECT_VALUES_4REPORT)) { if (pageSetting.typeOfShowingSelectValue === TYPE_OF_SHOWING_SELECT_UNDERLINE_VALUE) { var listOptions = response.SelectionsDataMappingInCaptions[orgName]; var listOptionsUValue = response.SelectionsDataMappingInUnderlineValue[orgName]; // Get underline value value = getContentDataOfUnderlineValueSelections4Pdf(value , listOptions, listOptionsUValue); } } block = createTextBlockSHADING(header, hints, replaceTagBR2LineFeed(value), data); } else { block = createSelectGeneralBlockSHADING(header, hints, value, data , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting ); } } break; } case CONST_CTRL_TYPE_CTRLTABLE : case CONST_CTRL_TYPE_REPEATABLE_SUMMARY : //block = createInvoiceTableBlock(caption, hints, value, data['fixedTableTypes'], data['fixedTableKinds'], data['fixedTableCurrency'], pageSetting.two_column_format, data['fixedTableDataNameHeader'], data); // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { // Apply Hide > []Non-selected radio buttons and checkboxes block = createInvoiceTableBlockSHADING(header, hints, value, data['fixedTableTypes'], data['fixedTableKinds'], data['fixedTableCurrency'], pageSetting.two_column_format, data['fixedTableDataNameHeader'], data , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting ); } else { // Old method block = createInvoiceTableBlock(header, hints, value, data['fixedTableTypes'], data['fixedTableKinds'], data['fixedTableCurrency'], pageSetting.two_column_format, data['fixedTableDataNameHeader'], data); } break; case CONST_CTRL_TYPE_CTRLPOD : // Apply Hide > []Non-selected radio buttons and checkboxes var mapPODTable = response['@MapPODTable'][orgName]; block = createPODBlockSHADINGHelper(header, hints, data , POD_TOP_TABLE , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting , mapPODTable ); break; case CONST_CTRL_TYPE_CTRLGRID : // // PCA-174 (PDF/Excel Reports support for New Grid Type) // block = createGridBlock(caption, hints, value, data['number_of_column_in_grid'],pageSetting.two_column_format, pageSetting, data); // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createGridBlockSHADING(header, hints, value, data['number_of_column_in_grid'],pageSetting.two_column_format, pageSetting, data , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue ); } else { // Old method block = createGridBlock(header, hints, value, data['number_of_column_in_grid'],pageSetting.two_column_format, pageSetting, data); } break; case CONST_CTRL_TYPE_CTRLSCORETABLE : // Get current caption //block = createTableScoreBlock(caption, hints, data, response.TableScoreMappingData, pageSetting); // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createTableScoreBlockSHADING(header, hints, data, response.TableScoreMappingData, pageSetting); } else { // Old method block = createTableScoreBlock(header, hints, data, response.TableScoreMappingData, pageSetting); } break; default : // Setting default data for null value if (value == undefined || value == null) { value = ""; } if (data['type'] != CONST_CTRL_TYPE_INPUT_TEXT && value == 'null') { value = ''; } // Special processing currency for Number/Calculation controls if (data['type'] === CONST_CTRL_TYPE_INPUTCALCULATE || data['type'] === 'Integer' || data['type'] === 'Decimal' || data['type'] === CONST_CTRL_TYPE_INPUT_NUMERIC || data['type'] === CONST_CTRL_TYPE_INPUTTRENDS) { if (isVersion(VERSION_CALCULATION_KIND_STRING) && data['type'] === CONST_CTRL_TYPE_INPUTCALCULATE && (data['dataKind'] === 'String' || data['dataKind'] === 'Date')) { // 0024949: PDF Report - Text Calculation displays incorrectly (add commas for thousands) incase all values of operand are number // DO NOTHING because it's a Text Calculation } else { if (value != '' && true != data['encrypted']) { if (data['isShowComma'] || (data['_useCurrentcySymbol'] !== undefined && data['_useCurrentcySymbol'] === CONST_VALUE_TRUE_STR)) { var currencySymbol = data['_currencySymbol']; if (currencySymbol === undefined || currencySymbol === null) { currencySymbol = ''; //'$'; } // Apply format number using currency with format , value = formatNumberValue4Currency(value, currencySymbol, data['type'], orgName); } else { // Special treating with Decimal type and NO CURRENCY value = formatDecimalNumberWithoutCurrency(value, data, orgName); } } } // if (value != '') { // if (data['_useCurrentcySymbol'] !== undefined && data['_useCurrentcySymbol'] === CONST_VALUE_TRUE_STR) { // var currencySymbol = data['_currencySymbol']; // if (currencySymbol === undefined || currencySymbol === null) { // currencySymbol = '$'; // } // // // Apply format number using currency with format , // value = formatNumberValue4Currency(value, currencySymbol, data['type'], orgName); // } else { // // Special treating with Decimal type and NO CURRENCY // value = formatDecimalNumberWithoutCurrency(value, data, orgName); // //// if (data['type'] === 'Decimal') { //// if (value.indexOf('.') < 0) { //// value += '.0'; //// } //// } // } // } // PCA-212 : Print Preview/PDF support for Text Calculations if (isVersion(VERSION_CALCULATION_KIND_STRING)) { if (data['type'] === CONST_CTRL_TYPE_INPUTCALCULATE && data['showAsTextMobile'] === true) { // Clear caption and hints caption = ''; hints = ''; } } } if (data['type'] == CONST_CTRL_TYPE_INPUTEMAILREPORT || data['type'] == CONST_CTRL_TYPE_INPUTFAX || data['type'] == CONST_CTRL_TYPE_INPUTSECUREEMAILREPORT) { // PCA-180: PDF support for Shading and Spacing //block = createEmailReportBlock(caption, hints, value); if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createEmailReportBlockSHADING(header, hints, value, data); } else { block = createEmailReportBlock(caption, hints, value); } } else if (data['type'] == CONST_CTRL_TYPE_INPUTSCORESUMMARY) { // PCA-294: PDF/Preview - Apply new block formats for all widgets. block = createScoreSummaryBlockSHADING(header, hints, value, data); } else { // if (data['type'] == CONST_CTRL_TYPE_INPUT_TEXT) { // Special treating for TEXT (Replace line feed of PDF \n into HTML line feed (
) // Only affected in normal case or email normal, NOT IN EMAIL REPORT // Process other normal cases if (value != null && value != '') { value = value.toString(); value = value.replace(/\n/g,'
'); // Check value of Form_Record if (name === 'Form_Record' && caption === 'Form_Record: ') { value = value.replace(/&/g, '&'); } } // 0024855: PDF Report: Text Calculation - Mobile text align works incorrectly if (data['type'] === CONST_CTRL_TYPE_INPUTCALCULATE) { // Process create Calculation block = createCalculationBlockSHADING(header, hints, replaceTagBR2LineFeed(value), data); break; } // Replace special <br> into LINE FEED html // PCA-180: PDF support for Shading and Spacing //block = createGeneralBlock(caption, hints, replaceTagBR2LineFeed(value)); if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { block = createTextBlockSHADING(header, hints, replaceTagBR2LineFeed(value), data); } else { block = createGeneralBlock(caption, hints, replaceTagBR2LineFeed(value)); } } //block = createGeneralBlock(caption, hints, value); break; } // Put the previous PageBreak for current question // (Ignore the first position) var isForcePageBreak = false; // []Convert PageBreak question into page break var checkName = orgName; // Special treating with question inside Group // We will check top group name if (name.indexOf('(') > 0) { if (topGroupMapping4PageBreak[orgName] !== undefined && topGroupMapping4PageBreak[orgName] !== null) { var topGroup = topGroupMapping4PageBreak[orgName]; checkName = topGroup; } } var indexOfFieldInPageBreak = listQuestionAfterPageBreak.indexOf(checkName); if (indexOfFieldInPageBreak >= 0 && pageSetting.page_break_question_to_actual_page_break === true && i !== 0) { isForcePageBreak = true; // Remove current name out of listQuestionAfterPageBreak listQuestionAfterPageBreak.splice(indexOfFieldInPageBreak, 1); } // PCA-180: PDF support for Shading and Spacing if (isVersion(VERSION_SHADINGS_BUTTON_FOR_PDF)) { // Each loop in repeatable section start a new page if (isForcePageBreak === false && pageSetting.page_break_for_loop_question === true && data['type'] === CONST_CTRL_TYPE_GROUP && i !== 0) { isForcePageBreak = true; } } else { // Each loop in repeatable section start a new page if (isForcePageBreak === false && listFirstItemInsideGroup.indexOf(name) >= 0 && pageSetting.page_break_for_loop_question === true && i !== 0) { isForcePageBreak = true; } } var isForcePageBreakActual = isForcePageBreak; // Apply Compability > Do not show the repeatable caption in Report Settings if (isVersion(VERSION_COMPABILITY_DONOT_SHOW_GROUP_CAPTION)) { // The current question is a group + page break if (pageSetting && pageSetting.isCompatibilityMode === true && pageSetting.isCompatibilityDontShowGroupCpt === true && isForcePageBreak === true && data['type'] === CONST_CTRL_TYPE_GROUP && previousData !== null && isForcePageBreak === true ) { // Get previous data block for processing if (previousData['type'] === CONST_CTRL_TYPE_GROUP || previousData['type'] === 'inputPageBreak') { isForcePageBreak = false; } } } // PCA-219: Print Preview/PDF support for Remove space options // Put block into page putBlockIntoPage(block, pageSetting.two_column_format, isForcePageBreak, data); // Special treating with POD table (created from multiple fragments) if (data['type'] === CONST_CTRL_TYPE_CTRLPOD) { // Get structure of current POD var mapPODTable = response['@MapPODTable'][orgName]; if (mapPODTable['~showOSDReport'] === true) { var blockQuery = ''; if (mapPODTable['~showOSDReportType'] === 'across') { // Show OSD report (in table), layout ACROSS blockQuery = createPODBlockSHADINGHelper(header, hints, data , POD_OSD_REPORT , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting , mapPODTable ); } else { // Layout DOWN blockQuery = createPODOSDReportInDownLayout(header, hints, data); } // Put block into page putBlockIntoPage(blockQuery, pageSetting.two_column_format, isForcePageBreak, data); } // Check if we need show the Delivered Table of POD if (mapPODTable['~showDeliveredPickupReport'] === true) { var block1 = createPODBlockSHADINGHelper(header, hints, data , POD_DELIVER_TABLE , response.SelectionsDataMappingInCaptions , response.SelectionsDataMappingInUnderlineValue , pageSetting , mapPODTable ); // Put block into page putBlockIntoPage(block1, pageSetting.two_column_format, isForcePageBreak, data); } // var block2 = createPODBlockSHADINGHelper(header, hints, data // , POD_DELIVER_TABLE // , response.SelectionsDataMappingInCaptions // , response.SelectionsDataMappingInUnderlineValue // , pageSetting // ); // // Put block into page // putBlockIntoPage(block2, pageSetting.two_column_format, isForcePageBreak, data); } // Apply Compability > Do not show the repeatable caption in Report Settings previousData = data; previousIsForcePageBreak = isForcePageBreakActual; } glbHashObject['print_page_markers'] = printPageMarkers; // Add the Open Street Map (if exists) if (hasExistMap === true && pageSetting.show_GPS_coordinates === true && printPageMarkers.length > 0) { var mapRegionTemplate = '
Location Map
'; $('#PrintRegionData').append(mapRegionTemplate); // Put the custom page break $('.map_region_title').css('page-break-before', 'auto'); } // Ignore shade headings in Report Settings (PCA-190) // Process show/hide shade headings // if (pageSetting.shade_headings == false) { // // Clear shade headings // $('.form_title_region, .label_question').addClass('clear_shade_headings'); // $('.map_region_title') // .addClass('clear_shade_headings') // .css('border', CONST_VALUE_NONE); // } else { // $('.form_title_region, .label_question').removeClass('clear_shade_headings'); // $('.map_region_title') // .removeClass('clear_shade_headings'); // } // Process label shading width if (pageSetting.two_column_format == false) { $('.label_question').removeClass('label_question_two_column'); } else { $('.label_question').addClass('label_question_two_column'); } // Process max-width image updateMaxWidthImageForPrinting(); // Process word-wrap for printing processWordWrapForPrinting(); // Show map and markers (if existed) if (hasExistMap == true && pageSetting.show_GPS_coordinates == true && printPageMarkers.length > 0) { // Apply default width for osm_map_region (in printing status) $('#osm_map_region').addClass('osm_map_region_print'); if (showMapAndMarkers() == false) { jAlert(msg_print_create_map_fail); return; } } // Put events for checking load progress of images putEventForImages(); // Apply page break into table blocks (after 1s for loading all image complete) setTimeout('applyPageBreak(#hasExistMap#, #numberOfMarkers#);' .replace('#hasExistMap#', hasExistMap) .replace('#numberOfMarkers#', printPageMarkers.length) , 1000); setTimeout(function(){ $('#PrintRegionData').append('
'); var observer = new MutationObserver(reportFormResizedWithSelector); $('body.print_preview_body #PrintRegionData > *').each(function (index, element) { observer.observe(element, {attributes: true, attributeFilter: ['style']}); }); reportFormResizedWithSelector(); }, 1000); // PCA-266 Print Preview/PDF support for color option in Grids, questionnaires and Tables // Apply custom appearance CSS for all controls applyAppearance4ShadingHeadingsPDFLastAction(); }, error : function(request, status, error) { jAlert(msg_unknown_error); } }); // // Apply Dummy Processing Excel Template // applyDummyProcessingExcelTemplate(); } function reportFormResizedWithSelector () { var height = document.body.scrollHeight; var width = $('body').outerWidth(true); var content = $('#PrintRegionData'); if (content.length) { width = content.outerWidth(true); } var eventData = { eventType: 'doforms-form-resized', height: height, width: width }; console.log(eventData); top.postMessage(eventData, '*'); } var GENERAL_HEADER_TEMPLATE = '
#header#
'; var GENERAL_HEADER_LABEL_TEMPLATE = '
#header#
'; var GENERAL_CONTENT_TEMPLATE = '
#content#
'; var GENERAL_HINT_TEMPLATE = '
#hint#
'; var GENERAL_HINT_IMG_TEMPLATE = '

'; /** * Create general block content */ function createGeneralBlock(header, hint, content) { var block = new Array(); block.push('
'); if (header !== '') { block.push(GENERAL_HEADER_TEMPLATE.replace('#header#', header)); } if (content != '') { block.push(GENERAL_CONTENT_TEMPLATE.replace('#content#', content)); } if (hint != '') { block.push(GENERAL_HINT_TEMPLATE.replace('#hint#', hint)); } block.push('
'); var resultHTML = block.join(''); // Adjust padding-left = 0 in case of empty header if (header === '') { var objBlock = $(resultHTML); objBlock.find('.content_question').css('padding-left', '0px'); //resultHTML = objBlock[0].outerHTML(); // Get outerHTML resultHTML = jQuery('
').append(objBlock).html(); } return resultHTML; } /** * Create email report content */ function createEmailReportBlock(header, hint, content) { var block = new Array(); block.push('
'); block.push(GENERAL_HEADER_TEMPLATE.replace('#header#', header)); // Check if we need add hints object into GUI if (hint !== '') { block.push(GENERAL_HINT_TEMPLATE.replace('#hint#', hint)); } //block.push(GENERAL_HINT_TEMPLATE.replace('#hint#', hint)); // Unwrap HTML content = replaceTagBR2LineFeed(content); // Save the line feed //content = content.replace(/
- /, '[[\nSpecial_LINE_FEED_01\n]]'); //content = content.replace(/