How to use prompt method in fMBT

Best Python code snippet using fMBT_python

collecting-form.js

Source:collecting-form.js Github

copy

Full Screen

1/**2 * Populate a prompt row with the provided data.3 *4 * @param {Object} promptData5 */6var populatePromptRow = function(promptData) {7 // Detect whether a row is currently being edited. If one is, populate that8 // one. If one isn't, create a new row using the row template, populate it,9 // and append it to the prompts table.10 var promptRows = $('#prompts');11 var promptRow = promptRows.children('.prompt-editing');12 if (!promptRow.length) {13 var index = promptRows.children('.prompt').length;14 var promptRowTemplate = $('#prompts').data('promptRowTemplate');15 promptRow = $(promptRowTemplate.replace(/__INDEX__/g, index));16 promptRow.find('.prompt-id').val(promptData['o:id']);17 promptRows.append(promptRow);18 }19 // Populate the visual elements.20 var typeText = $('#prompt-type option[value="' + promptData['o-module-collecting:type'] + '"]').text();21 if ('property' === promptData['o-module-collecting:type']) {22 var propertyText = $('#prompt-property')23 .find('option[value="' + promptData['o:property']['o:id'] + '"]')24 .data('term');25 typeText += ' [' + propertyText + ']';26 } else if ('media' === promptData['o-module-collecting:type']) {27 var mediaTypeText = $('#prompt-media-type')28 .find('option[value="' + promptData['o-module-collecting:media_type'] + '"]')29 .text();30 typeText += ' [' + mediaTypeText + ']';31 }32 promptRow.find('.prompt-type-span').html(typeText);33 promptRow.find('.prompt-text-span').text(promptData['o-module-collecting:text']);34 // Populate the hidden inputs.35 promptRow.find('.prompt-type').val(promptData['o-module-collecting:type']);36 promptRow.find('.prompt-text').val(promptData['o-module-collecting:text']);37 promptRow.find('.prompt-input-type').val(promptData['o-module-collecting:input_type']);38 promptRow.find('.prompt-select-options').val(promptData['o-module-collecting:select_options']);39 promptRow.find('.prompt-media-type').val(promptData['o-module-collecting:media_type']);40 promptRow.find('.prompt-required').val(promptData['o-module-collecting:required'] ? '1' : '0');41 if (promptData['o:property']) {42 promptRow.find('.prompt-property-id').val(promptData['o:property']['o:id']);43 }44}45/**46 * Reset the sidebar to its default state (i.e. no selected type).47 */48var resetSidebar = function() {49 $('#prompt-type').prop('selectedIndex', 0)50 .prop('disabled', false).css('background-color', '#ffffff');51 var promptText = $('#prompt-text');52 if (promptText.hasClass('html-editor')) {53 promptText.removeClass('html-editor').ckeditor().editor.destroy();54 }55 promptText.val('').closest('.sidebar-section').hide();56 $('#prompt-property').prop('selectedIndex', 0).closest('.sidebar-section').hide();57 $('#prompt-media-type').prop('selectedIndex', 0).closest('.sidebar-section').hide();58 $('#prompt-input-type').prop('selectedIndex', 0).closest('.sidebar-section').hide();59 $('#prompt-select-options').val('').closest('.sidebar-section').hide();60 $('#prompt-required').prop('checked', false).closest('.sidebar-section').hide();61 $('#prompt-save').hide();62 // The form may only have one "user_name" prompt.63 var hasUserName = $('#prompts .prompt-type[value="user_name"]').length;64 var userNameOption = $('#prompt-type option[value="user_name"]');65 hasUserName ? userNameOption.hide() : userNameOption.show();66 // The form may only have one "user_email" prompt.67 var hasUserEmail = $('#prompts .prompt-type[value="user_email"]').length;68 var userEmailOption = $('#prompt-type option[value="user_email"]');69 hasUserEmail ? userEmailOption.hide() : userEmailOption.show();70}71/**72 * Set the sidebar to the default state of the provided type and show it.73 *74 * @param {String} type75 */76var setSidebarForType = function(type) {77 resetSidebar();78 switch (type) {79 case 'property':80 $('#prompt-property').closest('.sidebar-section').show();81 $('#prompt-input-type').closest('.sidebar-section').show();82 $('#prompt-required').closest('.sidebar-section').show();83 break;84 case 'media':85 $('#prompt-media-type').closest('.sidebar-section').show();86 $('#prompt-required').closest('.sidebar-section').show();87 break;88 case 'user_name':89 case 'user_email':90 $('#prompt-required').closest('.sidebar-section').show();91 break;92 case 'input':93 case 'user_private':94 case 'user_public':95 $('#prompt-input-type').closest('.sidebar-section').show();96 $('#prompt-required').closest('.sidebar-section').show();97 break;98 case 'html':99 $('#prompt-text').addClass('html-editor').ckeditor();100 break;101 default:102 // invalid or no prompt type103 return;104 }105 $('#prompt-type').val(type);106 $('#prompt-text').closest('.sidebar-section').show();107 $('#prompt-save').show();108}109$(document).ready(function() {110 $('#prompts-table').hide();111 // Append existing prompts on load. 112 var promptsData = $('#prompts').data('promptsData');113 if (!promptsData.length) {114 // Always add a "dcterms:title" property prompt to a form without115 // prompts. Though not required, we should strongly recommend a title116 // for every collected item.117 promptsData = [{118 'o-module-collecting:type': 'property',119 'o-module-collecting:text': null,120 'o-module-collecting:input_type': 'text',121 'o-module-collecting:select_options': null,122 'o-module-collecting:media_type': null,123 'o-module-collecting:required': true,124 'o:property': {'o:id': $('#prompt-property option[data-term="dcterms:title"]').val()},125 }];126 }127 $.each(promptsData, function() {128 $('#prompts-table').show();129 populatePromptRow(this);130 });131 // Reload the original state of the form to avoid "changes not saved" modal.132 $('#collectingform').trigger('o:form-loaded');133 // Enable prompt sorting.134 new Sortable(document.getElementById('prompts'), {135 handle: '.sortable-handle'136 });137 // Handle changing the prompt's type.138 $('#prompt-type').on('change', function() {139 setSidebarForType($(this).val());140 });141 // Handle changing the prompt's input type.142 $('#prompt-input-type').on('change', function() {143 var inputType = $(this).val();144 var selectOptionsSection = $('#prompt-select-options').closest('.sidebar-section');145 if ('select' === inputType) {146 selectOptionsSection.show();147 } else {148 selectOptionsSection.hide();149 }150 });151 // Handle the delete prompt icon.152 $('#prompts').on('click', '.prompt-delete', function(e) {153 e.preventDefault();154 var deleteIcon = $(this);155 var prompt = deleteIcon.closest('.prompt');156 prompt.find(':input').prop('disabled', true);157 prompt.addClass('delete');158 prompt.find('.prompt-undo-delete').show();159 prompt.find('.prompt-edit').hide();160 if (prompt.hasClass('prompt-editing')) {161 Omeka.closeSidebar($('#prompt-sidebar'));162 }163 deleteIcon.hide();164 });165 // Handle the undo delete prompt icon.166 $('#prompts').on('click', '.prompt-undo-delete', function(e) {167 e.preventDefault();168 var undoIcon = $(this);169 var prompt = undoIcon.closest('.prompt');170 prompt.find(':input').prop('disabled', false);171 prompt.removeClass('delete');172 prompt.find('.prompt-delete').show();173 prompt.find('.prompt-edit').show();174 undoIcon.hide();175 });176 // Handle the add prompt button.177 $('#prompt-add').on('click', function(e) {178 e.preventDefault();179 resetSidebar();180 $('#prompts > .prompt').removeClass('prompt-editing');181 Omeka.openSidebar($('#prompt-sidebar'));182 });183 // Handle the edit prompt icon.184 $('#prompts').on('click', '.prompt-edit', function(e) {185 e.preventDefault();186 var prompt = $(this).closest('.prompt');187 var type = prompt.find('.prompt-type').val();188 var text = prompt.find('.prompt-text').val();189 prompt.siblings().removeClass('prompt-editing');190 prompt.addClass('prompt-editing');191 setSidebarForType(type);192 switch (type) {193 case 'property':194 var inputType = prompt.find('.prompt-input-type').val();195 $('#prompt-text').val(text);196 $('#prompt-property').val(prompt.find('.prompt-property-id').val());197 $('#prompt-input-type').val(inputType);198 if ('select' === inputType) {199 var selectOptions = prompt.find('.prompt-select-options').val();200 $('#prompt-select-options').val(selectOptions).closest('.sidebar-section').show();201 }202 break;203 case 'media':204 var mediaType = prompt.find('.prompt-media-type').val();205 $('#prompt-text').val(text);206 $('#prompt-media-type').val(mediaType);207 break;208 case 'input':209 case 'user_private':210 case 'user_public':211 var inputType = prompt.find('.prompt-input-type').val();212 $('#prompt-text').val(text);213 $('#prompt-input-type').val(inputType);214 if ('select' === inputType) {215 var selectOptions = prompt.find('.prompt-select-options').val();216 $('#prompt-select-options').val(selectOptions).closest('.sidebar-section').show();217 }218 break;219 case 'user_name':220 case 'user_email':221 case 'html':222 $('#prompt-text').val(text);223 break;224 default:225 // invalid or no prompt type226 return;227 }228 // A prompt type cannot be changed once it's saved.229 $('#prompt-type').prop('disabled', true).css('background-color', '#dfdfdf');230 $('#prompt-required').prop('checked', '1' === prompt.find('.prompt-required').val() ? true : false);231 Omeka.openSidebar($('#prompt-sidebar'));232 });233 // Handle saving the prompt.234 $('#prompt-save').on('click', function(e) {235 e.preventDefault();236 var promptData = {237 'o-module-collecting:type': $('#prompt-type').val(),238 'o-module-collecting:text': $('#prompt-text').val(),239 'o-module-collecting:input_type': $('#prompt-input-type').val(),240 'o-module-collecting:select_options': $('#prompt-select-options').val(),241 'o-module-collecting:media_type': $('#prompt-media-type').val(),242 'o-module-collecting:required': $('#prompt-required').prop('checked'),243 'o:property': {'o:id': $('#prompt-property').val()},244 };245 // Validate the data before populating the row.246 switch (promptData['o-module-collecting:type']) {247 case 'property':248 if (!$.isNumeric(promptData['o:property']['o:id'])) {249 alert('You must select a property.');250 return;251 }252 if (!promptData['o-module-collecting:input_type']) {253 alert('You must select an input type.');254 return;255 }256 break;257 case 'media':258 if (!promptData['o-module-collecting:text']) {259 alert('You must provide prompt text.');260 return;261 }262 if (!promptData['o-module-collecting:media_type']) {263 alert('You must select a media type.');264 return;265 }266 break;267 case 'input':268 case 'user_private':269 case 'user_public':270 if (!promptData['o-module-collecting:text']) {271 alert('You must provide prompt text.');272 return;273 }274 if (!promptData['o-module-collecting:input_type']) {275 alert('You must select an input type.');276 return;277 }278 break;279 case 'user_name':280 case 'user_email':281 case 'html':282 if (!promptData['o-module-collecting:text']) {283 alert('You must provide prompt text.');284 return;285 }286 break;287 default:288 // invalid or no prompt type289 return;290 }291 populatePromptRow(promptData);292 $('#prompts-table').show();293 Omeka.closeSidebar($('#prompt-sidebar'));294 });...

Full Screen

Full Screen

calculations.py

Source:calculations.py Github

copy

Full Screen

1import math2def calculate(prompt):3 """4 Checks if the input prompt contains certain keywords then5 performs mathematical functions on the input string.6 The string must follow certain rules for each equation listed below:7 addition: command - 'calculate number plus number' or8 'calculate number add number'9 subtraction: command - 'calculate number minus number' or10 'calculate number subtract number' or11 'calculate number subtracted by number'12 multiplication: command - 'calculate number times number' or13 'calculate number multiplied by number'14 division: command - 'calculate number divided by number' or15 'calculate number multiplied by number'16 exponential: command - 'calculate number to the power of number' or17 'calculate number to the power number' or18 'calculate number power number'19 square root: command - 'calculate the square root of number'20 factorial: command - 'calculate number factorial'21 logarithmic: command - 'calculate log base number of number'22 :param prompt:23 :return: a tuple of the result and the formula24 """25 if 'add' in prompt:26 """Splits the command at 'add' then adds the 2 numbers from the prompt: 'calculate number add number'"""27 calc_prompt = prompt.split('add')28 result = round(float(calc_prompt[0]) + float(calc_prompt[1]), 2)29 return (result, prompt)30 if '+' in prompt:31 """Splits the command at '+' then adds the 2 numbers from the prompt: 'calculate number plus number'"""32 calc_prompt = prompt.split('+')33 result = round(float(calc_prompt[0]) + float(calc_prompt[1]), 2)34 return (result, prompt)35 if '-' in prompt:36 """Splits the command at '-' then subtracts the 2nd number from the 1st from the prompt: 'calculate number minus number'"""37 calc_prompt = prompt.split('-')38 prompt = prompt.replace('-', 'minus')39 result = round(float(calc_prompt[0]) - float(calc_prompt[1]), 2)40 return (result, prompt)41 if 'subtract' in prompt:42 """Splits the command at 'subtract' then subtracts the 2nd number from the 1st from the prompt: 'calculate number subtract number'"""43 calc_prompt = prompt.split('subtract')44 prompt = prompt.replace('subtract', 'minus')45 result = round(float(calc_prompt[0]) - float(calc_prompt[1]), 2)46 return (result, prompt)47 if 'subtracted by' in prompt:48 """Splits the command at 'subtracted by' then subtracts the 2nd number from the 1st from the prompt: 'calculate number subtracted by number'"""49 calc_prompt = prompt.split('subtracted by')50 prompt = prompt.replace('subtracted by', 'minus')51 result = round(float(calc_prompt[0]) - float(calc_prompt[1]), 2)52 return (result, prompt)53 if 'times' in prompt:54 """Splits the command at 'times' then multiplied the 2 numbers from the prompt: 'calculate number times number'"""55 calc_prompt = prompt.split('times')56 result = round(float(calc_prompt[0]) * float(calc_prompt[1]), 2)57 return (result, prompt)58 if 'multiplied by' in prompt:59 """Splits the command at 'multiplied by' then multiplies the 2 numbers from the prompt: 'calculate number multiplied by number'"""60 calc_prompt = prompt.split('multiplied by')61 result = round(float(calc_prompt[0]) * float(calc_prompt[1]), 2)62 return (result, prompt)63 if '*' in prompt:64 """Splits the command at '*' then multiplies the 2 numbers from the prompt: 'calculate number times number'"""65 calc_prompt = prompt.split('*')66 prompt = prompt.replace('*', 'times')67 result = round(float(calc_prompt[0]) * float(calc_prompt[1]), 2)68 return (result, prompt)69 if '/' in prompt:70 """Splits the command at '/' then divides the 1st number by the 2nd number from the prompt: 'calculate number divided by number'"""71 calc_prompt = prompt.split('/')72 prompt = prompt.replace('/', 'divided by')73 result = round(float(calc_prompt[0]) / float(calc_prompt[1]), 2)74 return (result, prompt)75 if 'divided by' in prompt:76 """Splits the command at 'divided by' then divides the 1st number by the 2nd number from the prompt: 'calculate number divided by number'"""77 calc_prompt = prompt.split('divided by')78 result = round(float(calc_prompt[0]) / float(calc_prompt[1]), 2)79 return (result, prompt)80 if 'to the power of' in prompt:81 """Splits the command at 'to the power of' then takes the 1st number to the power of the 2nd number from the prompt: 'calculate number to the power of number'"""82 calc_prompt = prompt.split('to the power of')83 result = round(float(calc_prompt[0]) ** float(calc_prompt[1]), 2)84 return (result, prompt)85 if 'to the power' in prompt:86 """Splits the command at 'to the power' then takes the 1st number to the power of the 2nd number from the prompt: 'calculate number to the power number'"""87 calc_prompt = prompt.split('to the power')88 prompt = prompt.replace('to the power', 'to the power of')89 result = round(float(calc_prompt[0]) ** float(calc_prompt[1]), 2)90 return (result, prompt)91 if 'power' in prompt:92 """Splits the command at 'power' then takes the 1st number to the power of the 2nd number from the prompt: 'calculate number power number'"""93 calc_prompt = prompt.split('power')94 prompt = prompt.replace('power', 'to the power of')95 result = round(float(calc_prompt[0]) ** float(calc_prompt[1]), 2)96 return (result, prompt)97 if '^' in prompt:98 """Splits the command at '^' then takes the 1st number to the power of the 2nd number from the prompt: 'calculate number to the power of number'"""99 calc_prompt = prompt.split('^')100 prompt = prompt.replace('^', 'to the power of')101 result = round(float(calc_prompt[0]) ** float(calc_prompt[1]), 2)102 return (result, prompt)103 if 'the square root of' in prompt:104 """Remove 'the square root of' from the command then takes the square root of the number from the prompt: 'calculate the square root of number'"""105 calc_prompt = prompt.replace('the square root of', '')106 result = round(math.sqrt(float(calc_prompt)), 2)107 return (result, prompt)108 if 'factorial' in prompt:109 """Removes 'factorial' from the command then takes the factorial of the number from the prompt: 'calculate number factorial'"""110 calc_prompt = prompt.replace('factorial', '')111 result = round(math.factorial(float(calc_prompt)), 2)112 return (result, prompt)113 if 'log base' in prompt:114 """Removes 'log base' and 'of' from the command then takes the log base(1st number) of the 2nd number from the prompt: 'calculate number factorial'"""115 calc_prompt = prompt.replace(' log base ', '').replace(' of', '')116 calc_prompt = calc_prompt.split(' ')117 print('calc_prompt:', calc_prompt)118 result = round(math.log(float(calc_prompt[1]), float(calc_prompt[0])), 2)...

Full Screen

Full Screen

test_sequences.py

Source:test_sequences.py Github

copy

Full Screen

1import unittest2import generatools.sequences as sequences3class TestPromptSeqsPairSequences(unittest.TestCase):4 """5 Test that the x_sequences class behave properly.6 Test type: functional (public API)7 """8 def test_run_if_proper_sequences_trimmed(self):9 sequences.PromptSeqsPair(10 prompt="bla", sequences=["aa", "bb"], sequences_trimmed=["a", "b"]11 )12 def test_except_if_improper_sequences_trimmed(self):13 self.assertRaises(14 ValueError,15 sequences.PromptSeqsPair,16 prompt="bla",17 sequences=["aa", "bb"],18 sequences_trimmed=["a"],19 )20 def test_run_if_proper_prompt_lvl_eval(self):21 z = sequences.PromptSeqsPair(22 prompt="bla",23 sequences=["aa", "bb"],24 prompt_lvl_eval={"metric1": 2, "metric2": 3},25 )26 z.prompt = "bla"27 def test_except_if_improper_prompt_lvl_eval(self):28 self.assertRaises(29 TypeError,30 sequences.PromptSeqsPair,31 prompt="bla",32 sequences=["aa", "bb"],33 prompt_lvl_eval=[2, 3],34 )35 self.assertRaises(36 TypeError,37 sequences.PromptSeqsPair,38 prompt="bla",39 sequences=["aa", "bb"],40 prompt_lvl_eval={"metric1": [2, 3]},41 )42 def test_run_if_proper_seq_lvl_eval(self):43 sequences.PromptSeqsPair(44 prompt="bla",45 sequences=["aa", "bb"],46 seq_lvl_eval={"metric1": [2, 3], "metric2": [3, 4]},47 )48 def test_except_if_improper_seq_lvl_eval(self):49 self.assertRaises(50 TypeError,51 sequences.PromptSeqsPair,52 prompt="bla",53 sequences=["aa", "bb"],54 seq_lvl_eval=[55 {"metric1": 2, "metric2": 3},56 {"metric1": 2, "metric2": 3},57 ],58 )59 self.assertRaises(60 ValueError,61 sequences.PromptSeqsPair,62 prompt="bla",63 sequences=["aa", "bb"],64 seq_lvl_eval={"metric1": [2, 3], "metric2": [3]},65 )66 def test_to_dict_generates_a_dict(self):67 obs_out = sequences.PromptSeqsPair(68 prompt="bla",69 sequences=["aa", "bb"],70 ).to_dict()71 self.assertIsInstance(obs_out, dict)72 def test_average_seq_lvl_eval_works(self):73 exp_out = {"m1": 2, "m2": 20}74 obs_out = sequences.PromptSeqsPair(75 prompt="bla",76 sequences=["aa", "bb"],77 seq_lvl_eval={"m1": [1, 3], "m2": [10, 30]},78 ).average_seq_lvl_eval()79 self.assertEqual(exp_out, obs_out)80class TestPromptSeqsPairsList(unittest.TestCase):81 def test_setting_retrieving_works(self):82 ls = [83 sequences.PromptSeqsPair(84 prompt="a",85 sequences=["y1", "y2"],86 prompt_lvl_eval={"m1": 1, "m2": 10},87 ),88 sequences.PromptSeqsPair(89 prompt="b",90 sequences=["y1", "y2"],91 prompt_lvl_eval={"m1": 3, "m2": 30},92 ),93 ]94 pair_list = sequences.PromptSeqsPairsList(ls=ls)95 self.assertEqual(pair_list[1].prompt, "b")96 def test_fail_if_wrong_ls_input(self):97 ls = [98 sequences.PromptSeqsPair(99 prompt="a",100 sequences=["y1", "y2"],101 prompt_lvl_eval={"m1": 1, "m2": 10},102 ),103 "oups",104 ]105 self.assertRaises(ValueError, sequences.PromptSeqsPairsList, ls=ls)106 def test_raise_exception_when_different_metric_set(self):107 ls = [108 sequences.PromptSeqsPair(109 prompt="a",110 sequences=["y1", "y2"],111 prompt_lvl_eval={"oups": 1, "m2": 10},112 ),113 sequences.PromptSeqsPair(114 prompt="b",115 sequences=["y1", "y2"],116 prompt_lvl_eval={"m1": 3, "m2": 30},117 ),118 ]119 pair_list = sequences.PromptSeqsPairsList(ls=ls)120 self.assertRaises(KeyError, pair_list.average_prompt_lvl_metrics)121 def test_prompt_lvl_averaging_works(self):122 ls = [123 sequences.PromptSeqsPair(124 prompt="a",125 sequences=["y1", "y2"],126 prompt_lvl_eval={"m1": 1, "m2": 10},127 ),128 sequences.PromptSeqsPair(129 prompt="b",130 sequences=["y1", "y2"],131 prompt_lvl_eval={"m1": 3, "m2": 30},132 ),133 ]134 pair_list = sequences.PromptSeqsPairsList(ls=ls)135 exp_out = {"m1": 2, "m2": 20}136 obs_out = pair_list.average_prompt_lvl_metrics()137 self.assertEqual(exp_out, obs_out)138 def test_seq_lvl_averaging_works(self):139 ls = [140 sequences.PromptSeqsPair(141 prompt="a",142 sequences=["y1", "y2"],143 seq_lvl_eval={"m1": [1, 1], "m2": [10, 10]},144 ),145 sequences.PromptSeqsPair(146 prompt="b",147 sequences=["y1", "y2"],148 seq_lvl_eval={"m1": [3, 3], "m2": [30, 30]},149 ),150 ]151 pair_list = sequences.PromptSeqsPairsList(ls=ls)152 exp_out = {"m1": 2, "m2": 20}153 obs_out = pair_list.average_seq_lvl_metrics()154 self.assertEqual(exp_out, obs_out)155 def test_to_json_works(self):156 ls = [157 sequences.PromptSeqsPair(158 prompt="a",159 sequences=["y1", "y2"],160 seq_lvl_eval={"m1": [1, 1], "m2": [10, 10]},161 ),162 sequences.PromptSeqsPair(163 prompt="b",164 sequences=["y1", "y2"],165 seq_lvl_eval={"m1": [3, 1], "m2": [30, 10]},166 ),167 ]168 pair_list = sequences.PromptSeqsPairsList(ls=ls)169 obs_out = pair_list.to_json()170 exp_out = [ls[0].to_dict(), ls[1].to_dict()]...

Full Screen

Full Screen

PromptHandler.js

Source:PromptHandler.js Github

copy

Full Screen

1/**2 * File Manager.3 */4Craft.PromptHandler = Garnish.Base.extend({5 $modalContainerDiv: null,6 $prompt: null,7 $promptApplyToRemainingContainer: null,8 $promptApplyToRemainingCheckbox: null,9 $promptApplyToRemainingLabel: null,10 $promptButtons: null,11 _prompts: [],12 _promptBatchCallback: $.noop,13 _promptBatchReturnData: [],14 _promptBatchNum: 0,15 init: function()16 {17 },18 resetPrompts: function()19 {20 this._prompts = [];21 this._promptBatchCallback = $.noop;22 this._promptBatchReturnData = [];23 this._promptBatchNum = 0;24 },25 addPrompt: function(prompt)26 {27 this._prompts.push(prompt);28 },29 getPromptCount: function()30 {31 return this._prompts.length;32 },33 showBatchPrompts: function(callback)34 {35 this._promptBatchCallback = callback;36 this._promptBatchReturnData = [];37 this._promptBatchNum = 0;38 this._showNextPromptInBatch();39 },40 _showNextPromptInBatch: function()41 {42 var prompt = this._prompts[this._promptBatchNum].prompt,43 remainingInBatch = this._prompts.length - (this._promptBatchNum + 1);44 this._showPrompt(prompt.message, prompt.choices, $.proxy(this, '_handleBatchPromptSelection'), remainingInBatch);45 },46 /**47 * Handles a prompt choice selection.48 *49 * @param choice50 * @param applyToRemaining51 * @private52 */53 _handleBatchPromptSelection: function(choice, applyToRemaining)54 {55 var prompt = this._prompts[this._promptBatchNum],56 remainingInBatch = this._prompts.length - (this._promptBatchNum + 1);57 // Record this choice58 var choiceData = $.extend(prompt, {choice: choice});59 this._promptBatchReturnData.push(choiceData);60 // Are there any remaining items in the batch?61 if (remainingInBatch)62 {63 // Get ready to deal with the next prompt64 this._promptBatchNum++;65 // Apply the same choice to the remaining items?66 if (applyToRemaining)67 {68 this._handleBatchPromptSelection(choice, true);69 }70 else71 {72 // Show the next prompt73 this._showNextPromptInBatch();74 }75 }76 else77 {78 // All done! Call the callback79 if (typeof this._promptBatchCallback == 'function')80 {81 this._promptBatchCallback(this._promptBatchReturnData);82 }83 }84 },85 /**86 * Show the user prompt with a given message and choices, plus an optional "Apply to remaining" checkbox.87 *88 * @param string message89 * @param array choices90 * @param function callback91 * @param int itemsToGo92 */93 _showPrompt: function(message, choices, callback, itemsToGo)94 {95 this._promptCallback = callback;96 if (this.modal == null) {97 this.modal = new Garnish.Modal({closeOtherModals: false});98 }99 if (this.$modalContainerDiv == null) {100 this.$modalContainerDiv = $('<div class="modal fitted prompt-modal"></div>').addClass().appendTo(Garnish.$bod);101 }102 this.$prompt = $('<div class="body"></div>').appendTo(this.$modalContainerDiv.empty());103 this.$promptMessage = $('<p class="prompt-msg"/>').appendTo(this.$prompt);104 $('<p>').html(Craft.t('What do you want to do?')).appendTo(this.$prompt);105 this.$promptApplyToRemainingContainer = $('<label class="assets-applytoremaining"/>').appendTo(this.$prompt).hide();106 this.$promptApplyToRemainingCheckbox = $('<input type="checkbox"/>').appendTo(this.$promptApplyToRemainingContainer);107 this.$promptApplyToRemainingLabel = $('<span/>').appendTo(this.$promptApplyToRemainingContainer);108 this.$promptButtons = $('<div class="buttons"/>').appendTo(this.$prompt);109 this.modal.setContainer(this.$modalContainerDiv);110 this.$promptMessage.html(message);111 for (var i = 0; i < choices.length; i++)112 {113 var $btn = $('<div class="btn" data-choice="'+choices[i].value+'">' + choices[i].title + '</div>');114 this.addListener($btn, 'activate', function(ev)115 {116 var choice = ev.currentTarget.getAttribute('data-choice'),117 applyToRemaining = this.$promptApplyToRemainingCheckbox.prop('checked');118 this._selectPromptChoice(choice, applyToRemaining);119 });120 this.$promptButtons.append($btn);121 }122 if (itemsToGo)123 {124 this.$promptApplyToRemainingContainer.show();125 this.$promptApplyToRemainingLabel.html(' ' + Craft.t('Apply this to the {number} remaining conflicts?', {number: itemsToGo}));126 }127 this.modal.show();128 this.modal.removeListener(Garnish.Modal.$shade, 'click');129 this.addListener(Garnish.Modal.$shade, 'click', '_cancelPrompt');130 },131 /**132 * Handles when a user selects one of the prompt choices.133 *134 * @param choice135 * @param applyToRemaining136 * @private137 */138 _selectPromptChoice: function(choice, applyToRemaining)139 {140 this.$prompt.fadeOut('fast', $.proxy(function() {141 this.modal.hide();142 this._promptCallback(choice, applyToRemaining);143 }, this));144 },145 /**146 * Cancels the prompt.147 */148 _cancelPrompt: function()149 {150 this._selectPromptChoice('cancel', true);151 }...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run fMBT automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful