Best JavaScript code snippet using playwright-internal
index.js
Source:index.js
1 /*2 -----------------3 GLOBAL Util Module4 -----------------5 */6 7 function namespace(namespaceString) {8 var parts = namespaceString.split('.'),9 parent = window,10 currentPart = '';11 12 for(var i = 0, length = parts.length; i < length; i++) {13 currentPart = parts[i];14 parent[currentPart] = parent[currentPart] || {};15 parent = parent[currentPart];16 }17 18 return parent;19 }20 21 /*22 -----------------23 Anonymous Application Module24 -----------------25 26 Name: HSC app27 28 */29 namespace("com.compro.application");30 31 com.compro.application.hsc = (function() {32 33 var version = 7;34 var emailConfig = {35 adminEmail : "deshbir.dugal@comprotechnologies.com", 36 subject : "Pearson HSC Error Report",37 // "cc" is an array. Add other values in comma separated format. 38 cc : ["preeti.gupta@comprotechnologies.com"]39 }40 41 // Add separate Log Settings from Mascula for different logs.42 var musculaLogSettingsConfig = {43 "default-log" : {44 logId:"aaa4d152-e808-4f89-9cde-3e7b396ae1f8",45 suppressErrors: false,46 branding: 'none'47 },48 "q1-pearson-hsc.herokuapp.com" : {49 logId:"MnDNuBC-RkEpE",50 suppressErrors: false,51 branding: 'none'52 },53 "d1-pearson-hsc.herokuapp.com" : {54 logId:"s5zFzBC-Ug6Ff",55 suppressErrors: false,56 branding: 'none'57 },58 "p-pearson-hsc.herokuapp.com" : {59 logId:"xhbkHCC-xfrzib",60 suppressErrors: false,61 branding: 'none'62 }63 }64 //Logger config65 var JSLogsSettingsConfig = {66 "loggerPrefix" : "App.Login",67 "maxLogSize" : "50"68 }69 70 71 72 /********************************************************/73 /* DEPENDENCIES */74 /********************************************************/75 76 //JS Library Dependencies77 78 //DOM Dependencies79 var idTopContainer = "#bb-container";80 var clsMainHeader = ".main-header";81 var currentPanelId = -1;82 var isIE = false;83 var globalAjaxOptions = {84 elProgress : "#loadingIcon",85 cssProgressLoading : "",86 disableLoadingProgress : false87 }88 89 /********************************************************/90 /* PRIVATE MEMBERS */91 /********************************************************/92 93 // SoundManager config 94 var soundManagerConfig = {95 soundManagerObject : null,96 musicPlaying : false,97 musicStopped : true98 };99 100 // Config 101 var config = {102 };103 104 //User Logged In Flag105 var userinfo = {106 loggedin: false,107 name: "John Doe",108 email: "(john@pearson.com)",109 facebookuser: false,110 admin: false111 }112 113 //Global Flashcards holder (object of SwipeJs)114 var flashcards;115 116 //Logger117 var logger = JSLog.Register(JSLogsSettingsConfig.loggerPrefix);118 119 //...120 var facebookLoginCheckTimer;121 var facebookLoginTries=20;122 123 /*124 * Backbone Initialization125 * 126 * 127 */128 function backbone_init_routers() {129 HomeView.routerInitialize();130 DisciplineView.routerInitialize();131 ProductView.routerInitialize();132 TestView.routerInitialize();133 134 //One time loading of common Header View135 HeaderView.initialize();136 }137 138 /*139 * Global Viewas140 * 141 * 142 */143 var appHeader;144 145 146 147 /*148 * Global errorHandler 149 */150 function ajax_init_global_handlers() {151 /* ------------- Ajax events fire in following order ----------------*/152 153 $(document).ajaxStart(function () {154 155 var elProgress = globalAjaxOptions.elProgress;156 var cssProgressLoading = globalAjaxOptions.cssProgressLoading;157 158 if(!globalAjaxOptions.disableLoadingProgress) {159 //Show Waiting Icon160 $(globalAjaxOptions.elProgress).show();161 }162 163 164 });165 166 $(document).ajaxSend(function (e, xhr, opts) {167 /* Do Nothing */168 });169 170 $(document).ajaxError(function(event, xhr, settings, exception) {171 var msgHeader = "Ajax Error!";172 var msgTitle = "Oops!";173 var statusCode = "?..";174 175 var msgDesc = "An error has occured. Please try again by refreshing your browser or restarting the Application. If the problem persists, please contact your System Administrator.";176 177 if (xhr.status == 0) { // Not connected. Verify Network178 statusCode = xhr.status;179 msgHeader = statusCode + " :No Network Detected!";180 msgDesc = xhr.responseText;181 } else if (xhr.status == 401) { // UnAuthorized182 Backbone.history.navigate("#/home");183 return true;184 } else if (xhr.status == 403) { // Requested page not found. [404]185 statusCode = xhr.status;186 msgHeader = statusCode + " :The requested url is forbidden.";187 msgDesc = xhr.responseText;188 } else if (xhr.status == 404) { // Requested page not found. [404]189 statusCode = xhr.status;190 msgHeader = statusCode + " :Requested page not found.";191 msgDesc = xhr.responseText;192 } else if (xhr.status > 400 && xhr.status< 500) { // Requested page not found. [404]193 statusCode = xhr.status;194 msgHeader = statusCode + " :Client-Side Error.";195 msgDesc = xhr.responseText;196 } else if (xhr.status >= 500) { //Internal Server Error [500]197 statusCode = xhr.status;198 msgHeader = statusCode + " :Internal Server Error";199 msgDesc = xhr.responseText;200 } else if (exception === 'parsererror') { //Requested JSON parse failed201 msgHeader = statusCode + " :Response Parsing Error (Invalid JSON)";202 msgDesc = xhr.responseText;203 } else if (exception === 'timeout') { //Server Timeout - Check Connection204 msgHeader = statusCode + "Request to server has timed out";205 msgTitle = " :No Network Detected!";206 msgDesc = "You don't seem to be connected to the network. Please check network settings or connectivity and try again.";207 } else if (exception === '') { //Server Aborted request208 msgHeader = statusCode + " :Server Aborted Request";209 msgDesc = xhr.responseText210 } else { //Unknown Error211 msgHeader = statusCode + " :Unknown Error"; 212 msgDesc = xhr.responseText 213 }214 logger.error("Ajax Error - statusCode:"+statusCode+" msgHeader :"+msgHeader);215 var regex = new RegExp("\<style.*style\>");216 msgDesc = msgDesc.replace(regex, "");217 $("#ajax-error-label").text(msgTitle);218 $('#ajax-error-modal .modal-body .content-header').text(msgHeader);219 $('#message').html(msgDesc);220 $('#headers').html("<ul>"); 221 $('#headers').append("<li>url: " + settings.url + "</li>");222 $('#headers').append("<li>type: " + settings.type + "</li>");223 $('#headers').append("<li>data: " + settings.data + "</li></ul>");224 if(statusCode == 0){225 $('#ajax-error-modal .modal-body .content-body').hide();226 $('#no-network').show();227 } else {228 $('#no-network').hide();229 $('#ajax-error-modal .modal-body .content-body').show();230 }231 $('#ajax-error-modal').modal();232 $('#ajax-error-label').append(" <small>version " + version+"</small>");233 return true;234 }); 235 $(document).ajaxSuccess(function (e, xhr, opts) {236 /* Do Nothing */237 });238 239 $(document).ajaxComplete(function (e, xhr, opts) {240 /* Do Nothing */241 });242 243 $(document).ajaxStop(function () {244 //Stop loading animation245 $(globalAjaxOptions.elProgress).hide();246 });247 }248 249 function handleLoginSuccess(isFacebookUser) {250 251 //Check for double call252 if(userinfo.loggedin) {253 return;254 }255 userinfo.facebookuser = isFacebookUser;256 userinfo.loggedin = true;257 UserModel.get().fetch({258 success: function(model, response){259 if(model.get('isAdmin')){260 userinfo.admin = true;261 }262 /*263 * 1st parameter - update header for login264 * 2nd parameter - showHomeLink265 * 3rd parameter - setBackLink 266 */267 setHeaderOptions(true, false, false);268 }269 }); 270 Backbone.history.navigate("#/discipline");271 272 }273 274 275 function backbone_start_navigation() {276 Backbone.history.start();277 if (location.href.indexOf("?isFacebookLoginSuccess=") != -1) { //Facebook login success in iOS Home Screen Apps278 facebookLoginCheckTimer=setInterval(function(){getFBLoginStatus()}, 500);279 }280 }281 282 function getFBLoginStatus(){283 284 FB.getLoginStatus(function(response) {285 if (response.status === 'connected') {286 clearInterval(facebookLoginCheckTimer);287 handleLoginSuccess(true);288 }289 else290 {291 facebookLoginTries--;292 if(facebookLoginTries == 0) {293 //No more checking294 clearInterval(facebookLoginCheckTimer);295 facebookLoginTries=20;296 alert("Unable to login via Facebook. Did not recive a timely response from Facebook.")297 }298 }299 });300 }301 302 function soundmanager2_init() {303 soundManager.setup({304 // disable or enable debug output305 debugMode: false,306 // use HTML5 audio for MP3/MP4, if available307 preferFlash: false,308 useFlashBlock: false,309 // path to directory containing SM2 SWF310 url: 'images/sm/',311 // optional: enable MPEG-4/AAC support (requires flash 9)312 flashVersion: 9313 });314 }315 316 // Util function - for adding suffix in images317 function addSuffixToFilepath(filepath, suffix) {318 319 if(typeof filepath === 'undefined' || typeof suffix === 'undefined') {320 return filepath;321 }322 var retVal = filepath;323 324 var arr=new Array()325 arr=filepath.split('.')326 327 if (typeof arr[1] !== 'undefined' && arr[1] !== null) {328 retVal=arr[0] + suffix + "." + arr[1] 329 }330 return retVal;331 } 332 333 function muscula_log_init() {334 var domain = document.domain;335 if(!musculaLogSettingsConfig[domain]) {336 // Add the errors to the default logs file if the domain don't have separate logs config. 337 domain = "default-log";338 }339 var masculaLogSettings = musculaLogSettingsConfig[domain];340 341 window.Muscula = { settings:{342 logId:masculaLogSettings.logId,343 suppressErrors: masculaLogSettings.suppressErrors,344 branding: masculaLogSettings.branding345 }};346 (function () {347 var m = document.createElement('script'); m.type = 'text/javascript'; m.async = true;348 m.src = (window.location.protocol == 'https:' ? 'https:' : 'http:') +349 '//musculahq.appspot.com/Muscula.js';350 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(m, s);351 window.Muscula.run=function(c){eval(c);window.Muscula.run=function(){};};352 window.Muscula.errors=[];window.onerror=function(){window.Muscula.errors.push(arguments);353 return window.Muscula.settings.suppressErrors===undefined;}354 })();355 }356 function modalEventRegistration(){357 $('#ajax-error-modal').on('show', function () {358 var innerHTML = getJSLogsAsList;359 $('#logs').html(innerHTML);360 });361 362 $('#error-report').on('show', function () {363 var innerHTML = getJSLogsAsList;364 var date = new Date();365 var dateString = date.toString(); 366 $('#error-report .modal-body .date .date-data').html(dateString);367 $('#error-report .modal-body .date .version-data').html(version);368 $('#error-report .modal-body .content-header').html($('#ajax-error-modal .modal-body .content-header').html());369 $('#error-report .modal-body .content-body .logs').html(innerHTML);370 $('#error-report .modal-body .content-body .params').html($('#headers').html());371 $('#error-report .modal-body .content-body .message').html($('#message').html());372 });373 $("#ajax-error-modal .modal-footer .generateErrorReport").click(function(){374 $('#error-report').modal();375 }); 376 377 } 378 function getJSLogsAsList() {379 var logs = JSLog.Logs['App.Login'];380 var innerHTML = "<ol>";381 var planeLogs = "";382 for (var i = 0, len = logs.length; i < len; i++) {383 innerHTML += "<li value="+(logs.length - i)+">" +logs[logs.length - i - 1] + "</li>";384 // planeLogs is required so that tags are not included in the text for email. Required to add HTML in email.385 planeLogs += logs[i]+" ~~ ";386 }387 innerHTML += "</ol>";388 return innerHTML;389 }390 391 function setHeaderOptions(updateHeader, showHomeLink, showBackLink, showProfileButton) {392 if (updateHeader) {393 if (showProfileButton != undefined) {394 HeaderView.setHeaderMenu(showProfileButton);395 } else {396 HeaderView.setHeaderMenu();397 }398 }399 400 HeaderView.setHomeIcon(showHomeLink);401 HeaderView.setBackIcon(showBackLink);402 } 403 404 function transitionAppPanel(newPanelId, callback) {405 var panelContainer = $('#panel-container');406 var panelItems = $('.panel-item');407 if(this.currentPanelId == -1) //First time408 { 409 panelItems.hide();410 $(newPanelId).show("fast",function() {411 if(!(typeof callback === 'undefined') ) {412 callback(); 413 }414 //set fixed width of panel on loading first time415 panelContainer.removeClass('easing');416 });417 }418 else{419 $(this.currentPanelId).width($(this.currentPanelId).width());420 $(newPanelId).width($(this.currentPanelId).width());421 panelContainer.width($(newPanelId).outerWidth(true) +$(this.currentPanelId).outerWidth(true));422 /*var that=this;423 $('.panel-item').each(function(){424 if(that.currentPanelId.indexOf($(this).attr("id"))<0){425 $(this).hide();426 }427 });*/428 var translationWidth = 0;429 if($(newPanelId).attr("data-order")>$(this.currentPanelId).attr("data-order")){430 translationWidth = $(this.currentPanelId).outerWidth(true);431 applyTransition(panelContainer, 0);432 }else{433 applyTransition(panelContainer, -$(this.currentPanelId).outerWidth(true));434 }435 $(newPanelId).show();436 panelItems.css("float","left");437 $(newPanelId).outerWidth(true) +$(this.currentPanelId).outerWidth(true);438 panelContainer.addClass('easing');439 applyTransition(panelContainer, -translationWidth);440 if(!(typeof callback === 'undefined') ) {441 callback(); 442 }443 }444 this.currentPanelId = newPanelId;445 if(getInternetExplorerVersion()>-1 && getInternetExplorerVersion()<=9 ){446 transitionEndHandler();447 }448 }449 450 /*451 * function to apply cross browser transition effect for sliding452 * (works for only X coordinate)453 * @params 454 * - element(jquery wrapper) to apply the trasition on455 * - width to be translated (can be -ve or +ve)456 * */457 function applyTransition(element, width){458 element.css({459 "transform":"translate3d("+width+"px,0,0)",460 "-webkit-transform":"translate3d("+width+"px,0,0)",461 "-moz-transform":"translate3d("+width+"px,0,0)",462 // For IE 10.0463 "-ms-transform":"translate3d("+width+"px,0,0)",464 // For IE 9.0465 "-ms-transform":"translateX("+width+"px)",466 "-o-transform":"translate3d("+width+"px,0,0)"467 });468 }469 /*function to accomodate resizing of browser window or content.470 * @params - currentPanelId471 * */472 function onResizeTranslationHandler(panelId){473 /*$("#panel-container").removeClass('easing');474 var itemWidth = $("#bb-container").width();475 $("#panel-container").width(itemWidth * $(".panel-item").length);476 $('.panel-item').width(itemWidth);477 var translationWidth = $(panelId).attr("data-order") * -itemWidth;478 applyTransition($("#panel-container"), translationWidth);479 $("#bb-container").height($(panelId).height());*/480 }481 482 //function to handle "transitionend" event of panel-container483 function transitionEndHandler(event){ 484 /*485 * temporary check -- needs to be fixed486 * transitionend fired on buttons by bootstrap487 */488 if(event && event.target!=$("#panel-container")[0]){489 //logger.info("transitionend fired on" + event.target);490 return;491 }492 493 //removing the styles added for trasitioning 494 $("#panel-container").removeClass('easing');495 applyTransition($("#panel-container"),0);496 $("#panel-container").width("auto");497 $('.panel-item').css({498 "float":"none",499 "width":"auto"500 });501 var myApp = com.compro.application.hsc;502 $('.panel-item').each(function(){503 if(myApp.currentPanelId.indexOf($(this).attr("id"))<0){504 $(this).hide();505 }506 });507 $(myApp.currentPanelId).show();508 //$(myApp.currentPanelId).width("auto");509 }510 511 512 //Check if browser is IE513 function getInternetExplorerVersion()514 // Returns the version of Internet Explorer or a -1515 // (indicating the use of another browser).516 {517 var rv = -1; // Return value assumes failure.518 if (navigator.appName == 'Microsoft Internet Explorer')519 {520 var ua = navigator.userAgent;521 var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");522 if (re.exec(ua) != null)523 rv = parseFloat( RegExp.$1 );524 }525 return rv;526 }527 528 //Object can be a dom object/Jquery Object or a selector string529 function resizeColumns (object, isRowByRow){ //for setting the min-height of each column based on the maximun height of that row.530 531 var setCurrentTallest = function(obj, currTallest){532 $(obj).children().each(function(){533 if (Number.prototype.pxToEm) currTallest = currTallest.pxToEm(); //use ems unless px is specified534 // for ie6, set height since min-height isn't supported535 if ($.browser.msie && $.browser.version == 6.0) { $(this).children().css({'height': currTallest}); }536 $(this).children().css({'min-height': currTallest}); 537 });538 }539 540 var currentTallest = 0;541 $(object).each(function(){542 if(isRowByRow){543 currentTallest = 0;544 }545 $(this).children().each(function(i){546 $(this).children().each(function(){547 if ($(this).height() > currentTallest) { currentTallest = $(this).height(); }548 });549 });550 if(isRowByRow){551 setCurrentTallest(this,currentTallest);552 }553 554 });555 if(!isRowByRow) {556 $(object).each(function(){557 setCurrentTallest(this,currentTallest);558 });559 }560 }561 562 //Object can be a dom object/Jquery Object or a selector string563 function resetColumns (object){ // for removing the min-height of each column.564 $(object).each(function(){565 $(this).children().each(function(){566 if (Number.prototype.pxToEm) currentTallest = currentTallest.pxToEm(); //use ems unless px is specified567 // for ie6, set height since min-height isn't supported568 if ($.browser.msie && $.browser.version == 6.0) { $(this).children().css({'height': ''}); }569 $(this).children().css({'min-height':''}); 570 });571 572 });573 }574 575 576 577 /********************************************************/578 /* ONE TIME INIT FUNCTION */579 /********************************************************/580 581 (function init() {582 //Check if browser is IE583 isIE = navigator.appVersion.indexOf("MSIE") != -1584 $(document).ready(function() {585 586 logger.info("On Ready - Starting Initialization");587 588 logger.info("global error handlers initialization");589 ajax_init_global_handlers();590 591 logger.info("backbone routers initialization");592 backbone_init_routers();593 594 logger.info("backbone navigation start");595 backbone_start_navigation();596 //Initializing error modal to trigger logging in modal box each time it is shown.597 modalEventRegistration();598 logger.info("sound manager initialization");599 soundmanager2_init();600 601 logger.info("muscula initialization");602 muscula_log_init();603 604 //for resetting translate3d on resize605 $(window).bind("resize.translation", _.bind(function(){606 onResizeTranslationHandler(com.compro.application.hsc.currentPanelId);607 //com.compro.application.hsc.transitionAppPanel(com.compro.application.hsc.currentPanelId);608 }, this));609 610 611 //to remove styles added for trasitioning on end of transition612 $("#panel-container").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",transitionEndHandler);613 614 /*! Normalized address bar hiding for iOS & Android (c) @scottjehl MIT License */615 (function( win ){616 var doc = win.document;617 618 // If there's a hash, or addEventListener is undefined, stop here619 if( !location.hash && win.addEventListener ){620 621 //scroll to 1622 window.scrollTo( 0, 1 );623 var scrollTop = 1,624 getScrollTop = function(){625 return win.pageYOffset || doc.compatMode === "CSS1Compat" && doc.documentElement.scrollTop || doc.body.scrollTop || 0;626 },627 628 //reset to 0 on bodyready, if needed629 bodycheck = setInterval(function(){630 if( doc.body ){631 clearInterval( bodycheck );632 scrollTop = getScrollTop();633 win.scrollTo( 0, scrollTop === 1 ? 0 : 1 );634 }635 }, 15 );636 637 win.addEventListener( "load", function(){638 setTimeout(function(){639 //at load, if user hasn't scrolled more than 20 or so...640 if( getScrollTop() < 20 ){641 //reset to hide addr bar at onload642 win.scrollTo( 0, scrollTop === 1 ? 0 : 1 );643 }644 }, 0);645 } );646 }647 })( window );648 649 //FIX: iphone viewport scaling bug. The bug occurs when you set the viewport width650 // to device-width and rotate the phone to landscape view.651/* (function(doc) {652 653 var addEvent = 'addEventListener',654 type = 'gesturestart',655 qsa = 'querySelectorAll',656 scales = [1, 1],657 meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];658 659 function fix() {660 meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];661 doc.removeEventListener(type, fix, true);662 }663 664 if ((meta = meta[meta.length - 1]) && addEvent in doc) {665 fix();666 scales = [.25, 1.6];667 doc[addEvent](type, fix, true);668 }669 670 }(document)); */ 671 672 logger.info("On Ready - Completed Initialization");673 });674 675 676 })();677 678 /********************************************************/679 /* Public */680 /********************************************************/681 682 return {683 "config":config,684 "soundManagerConfig":soundManagerConfig,685 "userinfo": userinfo,686 "flashcards":flashcards,687 "appHeader":appHeader,688 "setHeaderOptions":setHeaderOptions,689 "idTopContainer" : idTopContainer,690 "clsMainHeader" : clsMainHeader,691 "currentPanelId" : currentPanelId,692 "globalAjaxOptions" : globalAjaxOptions,693 "transitionAppPanel" : transitionAppPanel,694 "isIE":isIE,695 "onResizeTranslationHandler":onResizeTranslationHandler,696 "handleLoginSuccess" : handleLoginSuccess,697 "logger" : logger,698 "addSuffixToFilepath" : addSuffixToFilepath,699 "JSLogsSettingsConfig" : JSLogsSettingsConfig,700 "resizeColumns":resizeColumns,701 "resetColumns":resetColumns,702 "version" : version703 }704 ...
testview.js
Source:testview.js
1TestView = new function() {2 3 /* ----- Global View Variables -----------------*/4 var bbTestView = null;5 var bbTrainView = null;6 /* -------------------------------------------------*/7 8 var mainApp = com.compro.application.hsc;9 var clsMainHeader = mainApp.clsMainHeader;10 11 12 var Router = Backbone.Router.extend({13 routes: {14 'product/:productId/test/:testId':'testhome'15 }, 16 17 testhome : function(productId, testId) {18 19 if (bbTestView == null) { //First OR After Browser Refresh20 21 bbTestView = new View({productId:productId,testId:testId});22 23 } else { //If the View has been created (bbView) never re-create24 25 bbTestView.loadCollection(productId,testId);26 bbTestView.collection.fetch({27 success: function(){28 bbTestView.render();29 }30 }); 31 }32 },33 34 });35 var View = Backbone.View.extend({36 37 /*--------------- Static Class Variable ------------*/38 myPanelId:"#panel_test-home",39 /*------------------------------------------------------*/40 events: {41 "click .next" : "nextQuestion",42 "click .previous" : "prevQuestion",43 "click .resize" : "resizeContainer",44 "click .radio-control" : "switchRadioState"45 },46 initialize: function() {47 48 /* -------------- Setup and Initialize INSTANCE Variables -----------------*/49 this.template_header="";50 this.template_body="";51 this.current_product_id=-1;52 this.current_test_id=-1;53 this.current_mode="";54 this.requested_product_id=-1;55 this.requested_test_id=-1;56 this.requested_mode="asses";57 /* ------------------------------------------------------------------------*/ 58 59 this.loadCollection(this.options.productId,this.options.testId);60 61 //Fill Templates62 var that = this; 63 TemplateManager.get('test-home', 64 function(template){65 that.template_body = template;66 that.collection.fetch({67 success: function(){68 //Always call render from initialize - as Backbone does not automatically call it.69 that.render();70 }71 });72 });73 },74 loadCollection: function(product_Id,test_Id, mode) {75 this.requested_mode=mode;76 this.requested_product_id=product_Id;77 this.requested_test_id=test_Id;78 79 if(this.current_product_id!=this.requested_product_id || this.current_test_id!=this.requested_test_id) { 80 this.collection = TestCollection.get(this.requested_product_id,this.requested_test_id);81 }82 }, 83 // Updating method name from "render" to "custiomRender" for logging.84 customRender : function() {85 86 /*87 * 1st parameter - update header for login88 * 2nd parameter - showHomeLink89 * 3rd parameter - setBackLink 90 */91 mainApp.setHeaderOptions(true, true, true);92 93 // Check if we need to update the PANEL HTML - 94 // if we're back the same/previous product, then do NOT re-create the DOM 95 if(this.current_product_id!=this.requested_product_id || this.current_test_id!=this.requested_test_id || this.current_mode!=this.requested_mode) { 96 var attribs = this.collection.first().attributes;97 //Getting all the questions98 var questions = attribs.tests[0].questions;99 //Shuffling options100 for(var i=0;i<questions.length;i++){101 var optionArray = [];102 for(var j=1;j<=7;j++){103 if(questions[i]["option"+j])104 //Storing options in array105 optionArray.push(questions[i]["option"+j]);106 }107 //Adding new parameter options which stores shuffled options.108 questions[i].options=_.shuffle(optionArray);109 }110 111 if (attribs.type == "book") {112 attribs.book = true;113 attribs.lab = false;114 } else {115 attribs.book = false;116 attribs.lab = true;117 }118 attribs.thumbnail = mainApp.addSuffixToFilepath(attribs.image, "-thumb2");119 120 var compiled_template_body = Mustache.render(this.template_body, this.collection.toJSON());121 $(this.myPanelId).html(compiled_template_body);122 this.setElement("#test-home");123 124 this.current_product_id=this.requested_product_id;125 this.current_test_id=this.requested_test_id;126 this.current_mode="asses";127 }128 129 /*130 * SLIDE myPanelID into com.compro.application.hsc.currentPanelId131 */132 var self = this;133 mainApp.transitionAppPanel(this.myPanelId, function() {134 $("#body-set > .body").css("display", "block");135 if(document.activeElement)136 $(document.activeElement).blur();137 window.scrollTo(0, 0);138 mainApp.flashcards = new Swipe(document.getElementById('flashcard'), {"containersequence":1,callback:self.afterQuestionSwipeHandler}); 139 self.afterQuestionSwipeHandler();140 });141 142 143 return this; //Do this at the end to allow for method chaining. 144 },145 nextQuestion: function() {146 mainApp.flashcards.next();147 //Calling function for IE browsers148 if(mainApp.isIE)149 this.afterQuestionSwipeHandler();150 return false;151 },152 prevQuestion: function() {153 mainApp.flashcards.prev();154 //Calling function for IE browsers155 if(mainApp.isIE)156 this.afterQuestionSwipeHandler();157 return false;158 },159 afterQuestionSwipeHandler:function(){160 $("#current-question-no-home").html(mainApp.flashcards.getPos()+1);161 if(mainApp.flashcards.getPos()==0){162 $("#flashcard .previous").attr("disabled","disabled");163 $("#flashcard .previous").addClass("disabled");164 } else if($("#flashcard .previous.disabled")){165 $("#flashcard .previous.disabled").removeAttr("disabled");166 $("#flashcard .previous.disabled").removeClass("disabled");167 }168 },169 resizeContainer: function() {170 return false;171 },172 switchRadioState: function(e){173 if(this.timeOutObj){174 clearTimeout(this.timeOutObj);175 this.timeOutObj = null;176 }177 //Dummy settign for correct answer178 var correct = $(e.currentTarget);179 //Getting current clicked div element180 var currentOptionparentDiv = mainApp.flashcards.slides[mainApp.flashcards.index];181 var answered = correct;182 183 $(e.currentTarget).find("i.radio-options").toggleClass("icon-quiz-circle icon-quiz-selected");184 //Calculating correct answer matching text185 var correctAns = this.collection.first().attributes.tests[0].questions[mainApp.flashcards.getPos()].answer1.trim().toUpperCase();186 if(($(e.currentTarget).find("span").text()).trim().toUpperCase() !=correctAns){187 $(currentOptionparentDiv).find(".options").children().each(function(){188 if($(this).find("span").text().trim().toUpperCase() == correctAns){189 correct = this;190 return false;191 }192 })193 } 194 195 //Clearing already marked ans if any196 this.clearMarkedAnswer(currentOptionparentDiv);197 var self = this;198 //Calling markCorrectAnswer after the delay199 this.timeOutObj = _.delay(function(){self.markCorrectAnswer(correct,answered,currentOptionparentDiv)},500);200 },201 markCorrectAnswer: function(correct,answered,currentOptionparentDiv){202 $(correct).addClass('correct-ans');203 $(correct).find("i.radio-options").attr("class" , "radio-options icon-quiz-correct");204 /*var answerExplanation =$(currentOptionparentDiv).find("div.answer-explanation");205 $(answerExplanation).removeClass("hide");206 $(answerExplanation).children(".explainanswer").text(this.collection.first().attributes.questions[mainApp.flashcards.getPos()].answerDetails)207 */if(answered!=correct){208 $(answered).addClass('wrong-ans');209 $(answered).find("i.radio-options").toggleClass("icon-quiz-selected icon-quiz-wrong");210 }211 mainApp.onResizeTranslationHandler(mainApp.currentPanelId);212 },213 clearMarkedAnswer: function(currentOptionparentDiv){214 $(currentOptionparentDiv).find('.correct-ans').removeClass('correct-ans');215 $(currentOptionparentDiv).find('.wrong-ans').removeClass('wrong-ans');216 $(currentOptionparentDiv).find('i.icon-quiz-correct').toggleClass("icon-quiz-correct icon-quiz-circle");217 $(currentOptionparentDiv).find('i.icon-quiz-wrong').toggleClass("icon-quiz-wrong icon-quiz-circle");218 /*var answerExplanation =$(currentOptionparentDiv).find("div.answer-explanation");219 $(answerExplanation).addClass("hide");220 $(answerExplanation).children(".explainanswer").text("");*/221 }222 }); 223 224 this.routerInitialize = function(){225 router = new Router(); 226 };...
productview.js
Source:productview.js
1ProductView = new function() {2 /* ----- Global View Variables ----------------------*/3 var bbView = null;4 var pagePlayer = new PagePlayer();5 /* -------------------------------------------------*/6 var pagePlayerPlay = pagePlayer.events.play;7 var mainApp = com.compro.application.hsc;8 pagePlayer.config.updatePageTitle = false;9 pagePlayer.events.play = function(){10 $("#music").show();11 $("#music i").removeClass('icon-pause-hsc');12 $("#music i").addClass('icon-mute-hsc');13 mainApp.soundManagerConfig.musicPlaying = true;14 mainApp.soundManagerConfig.musicStopped = false;15 var soundManager = this;16 mainApp.soundManagerConfig.soundManagerObject = soundManager;17 pagePlayerPlay.call(soundManager);18 $("#product-home .sm2_playing i").toggleClass('icon-volume-up icon-pause');19 }20 var pagePlayerPause = pagePlayer.events.pause;21 pagePlayer.events.pause = function(){22 $("#music i").addClass('icon-pause-hsc');23 $("#music i").removeClass('icon-mute-hsc');24 mainApp.soundManagerConfig.musicPlaying = false;25 pagePlayerPause.call(this);26 $("#product-home .sm2_paused i").toggleClass('icon-volume-up icon-pause');27 }28 var pagePlayerResume = pagePlayer.events.resume;29 pagePlayer.events.resume = function(){30 mainApp.soundManagerConfig.musicPlaying = true;31 $("#music i").removeClass('icon-pause-hsc');32 $("#music i").addClass('icon-mute-hsc');33 pagePlayerResume.call(this);34 $("#product-home .sm2_playing i").addClass('icon-volume-up');35 $("#product-home .sm2_playing i").addClass('icon-pause'); 36 }37 var pagePlayerStop = pagePlayer.events.stop;38 pagePlayer.events.stop = function(){39 $("#music i").addClass('icon-pause-hsc');40 $("#music i").removeClass('icon-mute-hsc');41 mainApp.soundManagerConfig.musicPlaying = false;42 mainApp.soundManagerConfig.musicStopped = true;43 $("#product-home .sm2_playing i").removeClass('icon-volume-up');44 $("#product-home .sm2_playing i").removeClass('icon-pause');45 pagePlayerStop.call(this);46 }47 var pagePlayerFinish = pagePlayer.events.finish;48 pagePlayer.events.finish = function(){49 $("#music").hide();50 mainApp.soundManagerConfig.musicPlaying = false;51 mainApp.soundManagerConfig.musicStopped = true;52 $("#product-home .sm2_playing i").removeClass('icon-volume-up');53 $("#product-home .sm2_playing i").removeClass('icon-pause');54 pagePlayerFinish.call(this);55 }56 var mainApp = com.compro.application.hsc;57 var clsMainHeader = mainApp.clsMainHeader;58 59 var Router = Backbone.Router.extend({60 routes: {61 'discipline/:displineId/product/:productId':'producthome'62 }, 63 64 producthome : function(displineId, productId) {65 66 if (bbView == null) { //First OR After Browser Refresh67 68 bbView = new View({displineId:displineId,productId:productId});69 } 70 else { //If the View has been created (bbView) never re-create71 72 bbView.loadCollection(displineId,productId);73 bbView.collection.fetch({74 success: function(){75 bbView.render();76 }77 }); 78 79 }80 }81 82 });83 84 var View = Backbone.View.extend({85 86 /*--------------- Static Class Variable ------------*/87 myPanelId:"#panel_product-home",88 /*------------------------------------------------------*/89 90 events: {91 "click .flashcardAssess" : "flashcardassess",92 "click .flashcardTraining" : "flashcardtraining",93 },94 95 96 initialize: function() {97 98 /* -------------- Setup and Initialize INSTANCE Variables -----------------*/99 this.template_header="";100 this.template_body="";101 this.current_discipline_id=-1;102 this.current_product_id=-1;103 this.requested_discipline_id=-1;104 this.requested_product_id=-1;105 /* ------------------------------------------------------------------------*/106 107 108 this.loadCollection(this.options.displineId,this.options.productId);109 110 //Fill Templates111 var that = this; 112 TemplateManager.get('product-home', 113 function(template){114 that.template_body = template;115 that.collection.fetch({116 success: function(){ 117 //Always call render from initialize - as Backbone does not automatically call it.118 that.render();119 soundManager.onready(function() {120 pagePlayer.init(typeof PP_CONFIG !== 'undefined' ? PP_CONFIG : null);121 }); 122 }123 });124 125 });126 },127 128 loadCollection: function(discipline_id, product_id) {129 130 this.requested_discipline_id=discipline_id;131 this.requested_product_id=product_id;132 133 if(this.current_discipline_id!=this.requested_discipline_id || this.current_product_id!=this.requested_product_id) { 134 this.collection = ProductCollection.get(this.requested_discipline_id, this.requested_product_id);135 }136 137 },138 139 // Updating method name from "render" to "custiomRender" for logging.140 customRender: function() {141 /*142 * 1st parameter - update header for login143 * 2nd parameter - showHomeLink144 * 3rd parameter - setBackLink 145 */146 mainApp.setHeaderOptions(false, true, true);147 // Check if we need to update the PANEL HTML - 148 // if we're back the same/previous product, then do NOT re-create the DOM149 if(this.current_discipline_id!=this.requested_discipline_id || this.current_product_id!=this.requested_product_id) {150 151 var attribs = this.collection.first().attributes;152 if (attribs.type == "book") {153 attribs.book = true;154 attribs.lab = false;155 attribs.thumbnail = mainApp.addSuffixToFilepath(attribs.image, "-thumb1");156 } else {157 attribs.book = false;158 attribs.lab = true;159 attribs.thumbnail = mainApp.addSuffixToFilepath(attribs.image, "-thumb2");160 }161 162 var compiled_template_body = Mustache.render(this.template_body, this.collection.toJSON());163 164 $(this.myPanelId).html(compiled_template_body);165 166 this.setElement("#product-home");167 168 this.current_discipline_id=this.requested_discipline_id;169 this.current_product_id=this.requested_product_id;170 }171 /*172 * SLIDE myPanelID into com.compro.application.hsc.currentPanelId173 */174 mainApp.transitionAppPanel(this.myPanelId);175 if($("#product-home i.icon-pause").length > 0 && !($("#product-home .sm2_playing").length > 0)){176 $("#product-home i.icon-pause").toggleClass('icon-volume-up icon-pause');177 }178 return this; //Do this at the end to allow for method chaining.179 },180 flashcardassess : function(e) {181 var productid = this.requested_product_id;182 var testid = e.currentTarget.id;183 Backbone.history.navigate("#/product/" + productid + "/test/"+testid);184 },185 186 flashcardtraining : function(e) {187 var productid = this.requested_product_id;188 var testid = e.currentTarget.id;189 Backbone.history.navigate("#/product/" + productid + "/testtraining/"+testid);190 } 191 });192 this.routerInitialize = function(){193 194 if (this.router == null) {195 this.router = new Router();196 }197 };...
Using AI Code Generation
1const {addSuffixToFilePath} = require('playwright/lib/utils/utils');2const path = require('path');3const filePath = path.join(__dirname, 'test.txt');4const newFilePath = addSuffixToFilePath(filePath, '-suffix');5console.log('newFilePath', newFilePath);6const {addSuffixToFilePath} = require('playwright/lib/utils/utils');7const path = require('path');8const filePath = path.join(__dirname, 'test.txt');9const newFilePath = addSuffixToFilePath(filePath, '-suffix');10console.log('newFilePath', newFilePath);11const {addSuffixToFilePath} = require('playwright/lib/utils/utils');12const path = require('path');13const filePath = path.join(__dirname, 'test.txt');14const newFilePath = addSuffixToFilePath(filePath, '-suffix');15console.log('newFilePath', newFilePath);16const {addSuffixToFilePath} = require('playwright/lib/utils/utils');17const path = require('path');18const filePath = path.join(__dirname, 'test.txt');19const newFilePath = addSuffixToFilePath(filePath, '-suffix');20console.log('newFilePath', newFilePath);21const {addSuffixToFilePath} = require('playwright/lib/utils/utils');22const path = require('path');23const filePath = path.join(__dirname, 'test.txt');24const newFilePath = addSuffixToFilePath(filePath, '-suffix');25console.log('newFilePath', newFilePath);26const {addSuffixToFilePath} = require('playwright/lib/utils/utils');27const path = require('path');28const filePath = path.join(__dirname, 'test.txt');
Using AI Code Generation
1const { addSuffixToFilePath } = require('playwright/lib/utils/utils');2const suffix = 'suffix';3const filePath = 'file.js';4console.log(addSuffixToFilePath(filePath, suffix));5const { addSuffixToFilePath } = require('playwright/lib/utils/utils');6const suffix = 'suffix';7const filePath = 'file';8console.log(addSuffixToFilePath(filePath, suffix));9const { addSuffixToFilePath } = require('playwright/lib/utils/utils');10const suffix = 'suffix';11const filePath = 'file.js';12console.log(addSuffixToFilePath(filePath, suffix, '-'));13const { addSuffixToFilePath } = require('playwright/lib/utils/utils');14const suffix = 'suffix';15const filePath = 'file';16console.log(addSuffixToFilePath(filePath, suffix, '-'));17const { addSuffixToFilePath } = require('playwright/lib/utils/utils');18const suffix = 'suffix';19const filePath = 'file.js';20console.log(addSuffixToFilePath(filePath, suffix, '-'));21const { addSuffixToFilePath } = require('playwright/lib/utils/utils');22const suffix = 'suffix';23const filePath = 'file';24console.log(addSuffixToFilePath(filePath, suffix, '-'));25const { addSuffixToFilePath } = require('playwright/lib/utils/utils');26const suffix = 'suffix';27const filePath = 'file.js';28console.log(addSuffixToFilePath(filePath, suffix, '-'));29const { addSuffixToFilePath } = require('playwright/lib/utils/utils');
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!