Skip to content
{"_id":"682717282894466f24456f54","title":"QadhaSalaat","name":"qadhaSalaat","path":"qadhasalaat","type":"form","display":"form","tags":[""],"components":[{"label":"Beneficiary/Marhum's Name","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"max-text-length","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":true,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"marhumsName","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"epe9ijd","defaultValue":"","dataGridLabel":false},{"label":"Number of Months","columns":[{"components":[{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<label class=\"col-form-label field-required\">Years of Qadha Salaat</label><input class=\"form-control counter quantity\" name=\"Years of Qadha Salaat\" type=\"number\" min=\"1\" value=\"1\" max=\"20\">\n","refreshOnChange":false,"customClass":"","hidden":false,"modalEdit":false,"key":"html","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"tableView":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"ev9ryxs","dataGridLabel":false},{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<div>\n <div class=\"counter_caption\">\n <span class=\"counter_value\">1</span> x <span class=\"currency_name\">USD</span> <span class=\"unit_price_value\">200</span> (unit price)\n </div>\n <div class=\"my-error formio-errors invalid-feedback\" ref=\"messageContainer\">\n <div class=\"form-text error\">\n Counter must be minimum 1 and max 100\n </div>\n </div>\n</div>\n","refreshOnChange":false,"customClass":"unit_price","hidden":false,"modalEdit":false,"key":"html2","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"tableView":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"eb3dwx","dataGridLabel":false}],"offset":0,"push":0,"pull":0,"size":"md","currentWidth":7,"width":7},{"components":[{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<p class=\"total_amount\"><span class=\"product_price\">200</span> <span class=\"currency_name\">USD</span> </p>\n","refreshOnChange":false,"customClass":"total_currency_amount","hidden":false,"modalEdit":false,"key":"html1","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","tableView":false,"labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"ehey9gl","dataGridLabel":false}],"offset":0,"push":0,"pull":0,"size":"md","currentWidth":5,"width":5}],"autoAdjust":false,"customClass":"","hidden":false,"modalEdit":false,"key":"numberOfMonths","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"columns","input":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":false,"refreshOn":"","redrawOn":"","tableView":false,"labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"tree":false,"lazyLoad":false,"id":"e4ahhkr","dataGridLabel":false},{"label":"Request for Qadha Salaat","action":"submit","theme":"primary","size":"md","block":false,"leftIcon":"","rightIcon":"","shortcut":"","description":"","tooltip":"","customClass":"","tabindex":"","disableOnInvalid":false,"hidden":false,"autofocus":false,"disabled":false,"tableView":false,"modalEdit":false,"key":"submit","tags":[],"properties":{},"conditional":{"show":"","when":"","eq":"","json":""},"customConditional":"","logic":[],"attributes":{"data-source":"Record_QadhaSalaat_Form"},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"saveOnEnter":false,"type":"button","input":true,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","dataGridLabel":true,"labelPosition":"top","errorLabel":"","dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":{"type":"input"},"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"evu7i2","hideLabel":false},{"label":"Currencies","labelPosition":"top","widget":"choicesjs","placeholder":"Select","description":"","tooltip":"","customClass":"fo-hidden-field","tabindex":"","hidden":false,"hideLabel":false,"uniqueOptions":false,"autofocus":false,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"dataSrc":"values","data":{"values":[{"label":"USD","value":"USD"},{"label":"AUD","value":"AUD"},{"label":"EUR","value":"EUR"},{"label":"GBP","value":"GBP"},{"label":"CAD","value":"CAD"},{"label":"SGD","value":"SGD"}],"resource":"","json":"","url":"","custom":""},"valueProperty":"","dataType":"","idPath":"id","template":"<span>{{ item.label }}</span>","refreshOn":"","refreshOnBlur":"","clearOnRefresh":false,"searchEnabled":true,"selectThreshold":0.3,"readOnlyValue":false,"customOptions":{},"useExactSearch":false,"persistent":true,"protected":false,"dbIndex":false,"encrypted":false,"clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"onlyAvailableItems":false,"customMessage":"","custom":"","customPrivate":false,"json":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"currencies","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"limit":100,"type":"select","input":true,"prefix":"","suffix":"","showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"fuseOptions":{"include":"score","threshold":0.3},"indexeddb":{"filter":{}},"id":"e7k70ds","defaultValue":"USD","redrawOn":"","dataGridLabel":false,"authenticate":false,"ignoreCache":false,"lazyLoad":true,"filter":"","searchDebounce":0.3,"searchField":"","minSearch":0,"selectFields":""},{"label":"Product Id","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"productId","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"ewedu5b","defaultValue":"32","dataGridLabel":false},{"label":"Variant Id","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"variantId","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"eb7aqxh","defaultValue":"","dataGridLabel":false},{"label":"HandleErrorOnCount","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"defaultValue":"valid","persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"valid = input === \"valid\"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"handleErrorOnCount","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"e3w2w0a","dataGridLabel":false},{"label":"FormLogic","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"((VERSION = \"17.9\") => {\r\n const logger = {\r\n log: (...args) => {\r\n if (localStorage.getItem(\"debug\") !== \"true\") return;\r\n console.debug(...args)\r\n }, error: (...args) => {\r\n if (localStorage.getItem(\"debug\") !== \"true\") return;\r\n console.error(...args)\r\n }, info: (...args) => {\r\n if (localStorage.getItem(\"debug\") !== \"true\") return;\r\n console.log(`%cℹ️ ${args.join(', ')}`, 'color: blue; font-weight: bold;');\r\n }\r\n }\r\n const runOnce = (config) => {\r\n instance.root.scriptRunOnced = instance.root.scriptRunOnced || false;\r\n if (!instance.root.scriptRunOnced) {\r\n instance.root.scriptRunOnced = true;\r\n instance.root.config = config;\r\n logger.info(`* FM :: version = ${VERSION}`);\r\n logger.info(`* FM :: Form > Id = ${form._id}, Title = ${form.title}`);\r\n logger.info(`* FM :: Product-Id = ${data.productId}`);\r\n\r\n return {counterMin: config.counterMin, counterMax: config.counterMax};\r\n }\r\n return {counterMin: instance.root.config.counterMin, counterMax: instance.root.config.counterMax};\r\n }\r\n data = data || {}\r\n logger.log(\"* FM :: data = \", JSON.stringify(data));\r\n\r\n const BASE_URL = 'https://brains-service.akhyar.org/api/v1';\r\n const MAX_TEXT_LENGTH = 28;\r\n const prodPrice = document.querySelector('.product_price');\r\n const unitPrice = document.querySelector('.unit_price_value');\r\n const finalAmount = document.querySelector('.total_amount');\r\n const counter = document.querySelector('.counter');\r\n const counterCaption = document.querySelector('.counter_caption');\r\n const counterValueElem = document.querySelector('.counter_value');\r\n const maxTextLength = document.querySelector('.max-text-length');\r\n\r\n const handleErrorOnCount = instance.root.getComponent(\"handleErrorOnCount\");\r\n //const totalAmount = instance.root.getComponent(\"totalAmount\");\r\n const variantIdComponent = instance.root.getComponent('variantId');\r\n\r\n const {counterMin, counterMax} = runOnce({\r\n counterMin: counter ? counter.getAttribute(\"min\") || 1 : 1,\r\n counterMax: counter ? counter.getAttribute(\"max\") : 20\r\n });\r\n\r\n const counterErrMsg = `Count must be minimum ${counterMin} and max ${counterMax}`;\r\n\r\n const currencyElem = document.querySelectorAll('.currency_name');\r\n const productid = data.productId;\r\n\r\n let currency = data.currencies || \"USD\";\r\n currency = currency.toUpperCase();\r\n\r\n const onCounterChange = function () {\r\n const product_price = Number(unitPrice.innerText || 0);\r\n const counterValue = Number(counter.value || 1);\r\n logger.log(\"* FM :: \", product_price, counterValue);\r\n counterValueElem.innerText = counterValue;\r\n prodPrice.innerText = product_price * counterValue;\r\n };\r\n\r\n const showHideError = function (e, show, message) {\r\n const myErrorElem = e.target.parentNode.parentNode.parentNode.querySelector(\".my-error\");\r\n if (!myErrorElem) {\r\n logger.log(\"* FM :: error comp not found\");\r\n return;\r\n }\r\n if (message) {\r\n myErrorElem.innerHTML = `<div class=\"form-text error\">${message}</div>`;\r\n }\r\n if (show) {\r\n myErrorElem.style.display = \"block\";\r\n e.target.classList.add(\"is-invalid\");\r\n handleErrorOnCount.setValue(\"error\");\r\n } else {\r\n myErrorElem.style.display = \"none\";\r\n e.target.classList.remove(\"is-invalid\");\r\n handleErrorOnCount.setValue(\"valid\");\r\n }\r\n }\r\n\r\n //showHideError({target: counter}, false);\r\n const onRefresh = function (e) {\r\n logger.log(\"* FM :: onRefresh \", Number(e.target.value), counterMax);\r\n\r\n if (currencyElem) currencyElem.forEach(el => el.innerText = currency);\r\n\r\n if (data.showFinalAmountWhenVariantIsSelected) {\r\n const show = variantIdComponent.getValue() !== '';\r\n if (finalAmount) finalAmount.style.display = show ? \"block\" : \"none\";\r\n if (counterCaption) counterCaption.style.display = show ? \"block\" : \"none\";\r\n }\r\n\r\n // if (!e.target.value || (e.target.value && Number(e.target.value) > Number(counterMax))) {\r\n // logger.log(\"* FM :: no counter value\");\r\n // return;\r\n // }\r\n\r\n let isValid = true;\r\n if (!e.target.value || Number(e.target.value) < Number(counterMin) || (counterMax && Number(e.target.value) > Number(counterMax))) {\r\n e.target.value = e.target.value.substring(0, counterMax.length)\r\n isValid = false;\r\n } else if (e.key === '0' && Number(e.target.value) < Number(counterMin)) {\r\n isValid = false;\r\n } else if (Number(e.target.value + e.key) > Number(counterMax)) {\r\n isValid = false;\r\n }\r\n if (!isValid) {\r\n showHideError(e, true, counterErrMsg);\r\n } else {\r\n showHideError(e, false);\r\n }\r\n\r\n if (isValid) {\r\n onCounterChange();\r\n }\r\n };\r\n\r\n const bindCounterEvents = () => {\r\n counter.onchange = onCounterChange;\r\n counter.onkeyup = function (e) {\r\n if (!e.target.value) {\r\n showHideError(e, true, counterErrMsg);\r\n }\r\n }\r\n counter.onkeydown = function (e) {\r\n if (['.', '+', '-', 'e'].includes(e.key)) return false;\r\n if (e.key === 'Backspace') {\r\n if (e.target.value.length === 1) {\r\n showHideError(e, true, counterErrMsg);\r\n }\r\n return true;\r\n }\r\n showHideError(e, false, counterErrMsg);\r\n if (e.key === '0' && Number(e.target.value) < Number(counterMin)) {\r\n showHideError(e, true, counterErrMsg);\r\n return false;\r\n }\r\n // if (Number(e.target.value + e.key) > Number(counterMax)) {\r\n // showHideError(e, true, counterErrMsg);\r\n // return false;\r\n // }\r\n }\r\n counter.oninput = function (e) {\r\n if (!e.target.value || Number(e.target.value) < Number(counterMin) || (counterMax && Number(e.target.value) > Number(counterMax))) {\r\n showHideError(e, true, counterErrMsg);\r\n e.target.value = e.target.value.substring(0, counterMax.length)\r\n } else {\r\n showHideError(e, false, counterErrMsg);\r\n }\r\n onCounterChange();\r\n };\r\n ['onpaste', 'oncopy', 'onselect'].forEach(method => {\r\n counter[method] = function (e) {\r\n e.preventDefault();\r\n };\r\n })\r\n }\r\n\r\n const setVariantId = (apidata) => {\r\n const key = Object.keys(data).filter((x) => {\r\n if (typeof (data[x]) === \"object\" && data[x].type === 'variant') return true;\r\n if (data[x] && data[x].charAt && data[x].charAt(0) === '{') return true;\r\n }).map((x) => {\r\n if (data[x] && data[x].charAt && data[x].charAt(0) === '{') {\r\n let jsonStr = data[x].replace(/'/g, '\"');\r\n const nData = JSON.parse(jsonStr);\r\n return `${nData.key}:${nData.value}`.toLowerCase();\r\n }\r\n return `${data[x].key}:${data[x].value}`.toLowerCase();\r\n }).sort().join('|');\r\n\r\n logger.log(\"* FM :: key = \", key);\r\n\r\n const variant = apidata.find(e => {\r\n return e.key === key;\r\n });\r\n\r\n if (!variant) {\r\n logger.info(\"* FM :: variant not found\");\r\n variantIdComponent.setValue('');\r\n return;\r\n }\r\n\r\n const variantId = variant.variant_id;\r\n logger.log(\"* FM :: variant = \", variant, variantId);\r\n\r\n if (unitPrice) unitPrice.innerText = variant.pricing_data[currency];\r\n\r\n if (prodPrice && counter) {\r\n const counterValue = Number(counter.value);\r\n prodPrice.innerText = counterValue * variant.pricing_data[currency];\r\n }\r\n\r\n if (variantIdComponent) {\r\n variantIdComponent.setValue(variantId, {fromSubmission: true});\r\n }\r\n if (variantId && data.showFinalAmountWhenVariantIsSelected) {\r\n finalAmount.style.display = \"block\";\r\n counterCaption.style.display = \"block\";\r\n }\r\n };\r\n\r\n const fetchVariantData = () => {\r\n logger.log(\"* FM :: fetching variant data\");\r\n const cahced_data = instance.root.variants_data;\r\n if (cahced_data) {\r\n logger.log(\"* FM :: cache detected\");\r\n return Promise.resolve(cahced_data);\r\n }\r\n logger.log(\"* FM :: cache detected\");\r\n return fetch(`${BASE_URL}/products/${productid}/variants`)\r\n .then(response => response.json()).then(apidata => {\r\n return apidata.map(d => {\r\n const vdata = d.variant_data;\r\n const v2 = Object.keys(vdata).map((key) => {\r\n return `${key}:${vdata[key]}`.toLocaleLowerCase();\r\n }).sort().join('|');\r\n logger.log(\"* FM :: keys \", v2);\r\n return {...d, key: v2};\r\n });\r\n });\r\n }\r\n\r\n fetchVariantData().then((apidata) => {\r\n logger.log(\"* FM :: \", apidata);\r\n instance.root.variants_data = apidata;\r\n\r\n setVariantId(apidata);\r\n }).catch((err) => {\r\n logger.log(\"* FM :: ERROR => in fetching variant data\")\r\n // delete instance.root.variants_data;\r\n }).then(() => {\r\n // setTimeout(() => {\r\n // const submitBtn = instance.root.getComponent('submit')\r\n // submitBtn.refs.button.disabled = false; \r\n // }, 300);\r\n });\r\n\r\n if (counter) {\r\n // setTimeout(() => {\r\n onRefresh({target: counter})\r\n // }, 0);\r\n bindCounterEvents();\r\n }\r\n\r\n if (maxTextLength) {\r\n maxTextLength.oninput = (e) => {\r\n if (e.target.value.length > MAX_TEXT_LENGTH) {\r\n e.target.value = e.target.value.substring(0, MAX_TEXT_LENGTH)\r\n }\r\n }\r\n }\r\n\r\n const logicToResetSearchField = () => {\r\n logger.log('* FM :: logicToResetSearchField');\r\n const logicToClearSearchField = (comp) => {\r\n const searchInput = comp.element?.querySelector('input');\r\n searchInput.addEventListener('blur', () => {\r\n logger.log('* FM :: Choices input blurred:', comp.key);\r\n comp.choices.input.value = '';\r\n comp.choices._handleSearch('', true);\r\n\r\n setTimeout(logicToResetSearchField, 600);\r\n comp.triggerRedraw();\r\n });\r\n }\r\n instance.root.getComponents().forEach(comp => {\r\n if ((!comp.columns && !comp.choices) || (comp.choices && !comp.choices.input)) return;\r\n\r\n if (comp.columns) {\r\n comp.getComponents().forEach((subComp) => {\r\n if (!subComp.choices || (subComp.choices && !subComp.choices.input)) return;\r\n logicToClearSearchField(subComp);\r\n })\r\n } else {\r\n logicToClearSearchField(comp);\r\n }\r\n });\r\n }\r\n logicToResetSearchField();\r\n})();","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"logicForm","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"eb72hd4","defaultValue":"","dataGridLabel":false},{"label":"Show final amount when variant is selected","description":"","tooltip":"","shortcut":"","inputType":"checkbox","customClass":"fo-hidden-field","tabindex":"","hidden":false,"hideLabel":false,"autofocus":false,"disabled":false,"tableView":false,"modalEdit":false,"persistent":true,"protected":false,"dbIndex":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validate":{"required":false,"customMessage":"","custom":"","customPrivate":false,"json":"","strictDateValidation":false,"multiple":false,"unique":false},"validateWhenHidden":false,"errorLabel":"","errors":"","key":"showFinalAmountWhenVariantIsSelected","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"checkbox","input":true,"placeholder":"","prefix":"","suffix":"","multiple":false,"unique":false,"refreshOn":"","labelPosition":"right","widget":null,"validateOn":"change","showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"id":"ee1uo2b","defaultValue":true,"dataGridLabel":true,"value":"","name":""}],"pdfComponents":[],"access":[{"type":"read_all","roles":["681af7ed317bacb5e067c4ca","681af7ed317bacb5e067c4dd","681af7ed317bacb5e067c4e9"]}],"submissionAccess":[],"created":"2025-05-16T10:44:56.711Z","modified":"2025-06-12T12:56:40.107Z","machineName":"qadhaSalaat"}
Qadha Salaat for Marhumeen
Missed obligatory prayers, including five daily prayers and Salaat al-Ayaat, may lead to punishment in the grave. While it is recommended for relatives to perform Qadha Salaah for the deceased, it is obligatory upon the eldest son to complete his father’s Qadha Wajib prayers himself or by appointing someone.
We entrust this responsibility to qualified individuals who perform each prayer with accuracy on behalf of your Marhum . With our efficient system, five years of missed prayers can be completed within just one month , offering quick relief to your loved ones in the h ereafter . Each year of prayers includes the five daily prayers for 365 days as well as 4 Salaat al Ayaat that usually occur within a year.
How it Works
Your trust means everything to us. We handle every request with care, ensuring prayers are performed properly and respectfully on behalf of your loved ones.
Why Request This Service?
Obligatory prayers such as the five daily prayers and Salaat al Ayaat, if missed during a person’s lifetime for various reasons, may lead to hardship in the grave. Performing Qadha Salaah on their behalf helps relieve this burden.
This act is not only a way to honor your Marhumeens’ spiritual duties but also brings immense reward. By arranging these prayers, you earn blessings for yourself while providing comfort and mercy to those who have passed.
Change Starts With You
A pure intention can light up lives across continents . Through Akhyar, your kindness becomes a wave of hope that uplifts, empowers, and transforms.