{"version":3,"sources":["containers/Download/styles.module.scss","components/ui/Loader/index.js","utils/constants.js","utils/functions.js","protectedRoute.js","common/constants.js","utils/authConfig.js","common/authStore.js","utils/svg.js","components/LayoutComp/Index.js","assets/login_left_img.svg","assets/survey_vault.svg","assets/survey_insight.svg","assets/excel_icon.svg","assets/logo.svg","assets/word_icon.svg","assets/curious_logo2.jpg","components/Navigation/index.js","containers/QuestionCategory/category.slice.js","containers/Login/auth.slice.js","containers/Questions/question.slice.js","containers/AccountSettings/accounts.slice.js","containers/Reports/report.slice.js","containers/ManageQuestions/manageques.slice.js","reducers/index.js","store/store.js","utils/request.js","utils/apis.js","containers/QuestionCategory/category.action.js","containers/Dashboard/index.js","components/Header/index.js","containers/ErrorPage/index.js","containers/QuestionCategory/Components/DownloadModal.js","containers/Questions/question.action.js","containers/QuestionCategory/index.js","containers/Questions/index.js","containers/Download/index.js","components/WarningModal/index.js","containers/AccountSettings/account.action.js","containers/AccountSettings/index.js","containers/Reports/downloadPPT.js","assets/curious_logon.jpg","containers/Reports/reports.action.js","components/ui/SearchQues.js","containers/Reports/index.js","containers/ManageQuestions/manageques.action.js","containers/ManageQuestions/Components/ImportModal.js","containers/ManageQuestions/index.js","components/NotFound.js","routes.js","containers/Login/auth.action.js","containers/Login/index.js","assets/sfsdark_logo.jpg","App.js","reportWebVitals.js","index.js","containers/Questions/styles.module.scss"],"names":["module","exports","Loader","_jsx","className","children","qtype","window","question_type","STATIC_TEXT","QUESTION_TYPE","secretKey","decrypt","encryptedText","Error","bytes","CryptoJS","AES","decrypted","toString","enc","Utf8","error","console","message","parseJwt","token","arguments","length","undefined","base64","split","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","slice","join","JSON","parse","err","filterQuestionsById","data","questionIdArr","category","index","subcategories","subcategory","questions","filter","question","includes","precode","flattenData","flattened","qno","forEach","push","QNo","questionText","text","instruction","type","categoryTitle","title","categorysubTitle","options","option","preCode","excelDownloader","filename","setLoader","worksheet","XLSX","json_to_sheet","skipHeader","workbook","book_new","book_append_sheet","excelBuffer","bookType","blob","Blob","saveAs","setTimeout","wordDownload","async","questionData","doc","Document","numbering","config","reference","levels","level","format","LevelFormat","DECIMAL","alignment","AlignmentType","START","style","paragraph","indent","left","hanging","sections","properties","font","flatMap","item","Paragraph","heading","HeadingLevel","HEADING_1","TextRun","bold","italics","buffer","Packer","toBuffer","filterObj","values","filtersData","selectedQues","selectedQuestionaire","isExcel","selectedQuesCrossTab","finalfilter","id","key","value","qusetionnaireId","filters","QusetionnaireId","qId","cqId","createChartData","chartHeight","dynamictype","noofBar","datanew","qText","name","count","showInLegend","createSingleData","seriesoption","dataLabels","enabled","formatter","_this$series$options","this","point","series","y","fontFamily","qoption","qType","stacking","qoptionData","chart","height","credits","subtitle","xAxis","categories","crosshair","legend","verticalAlign","yAxis","min","labels","gridLineWidth","lineWidth","tickWidth","tooltip","backgroundColor","borderColor","borderRadius","borderWidth","color","fontSize","width","_this$series$options2","x","shadow","useHTML","shared","maxWidth","plotOptions","column","pointPadding","bar","groupPadding","_this$series$options3","noData","fontWeight","position","align","createTabledata","isMultiTable","groupbystack","grouped","_ref","stack","Object","groupByStack","crossMulti","quesText","hasOwnProperty","result","columns","dataIndex","tableData","render","dataarr","_jsxs","_Fragment","rowData","qIndex","optIndex","removeWhiteSpace","str","PrivateRoute","component","Component","path","exact","primaryComp","Route","props","Suspense","fallback","showBackground","Redirect","to","PrivateRouteAdmin","_ref2","usertypestr","localStorage","getItem","usertype","defaultProps","propTypes","PropTypes","bool","string","oneOfType","arrayOf","isRequired","NAVIGATION","AUTH_STATUS","STATUS_CODE","AUTH0","appBasePath","process","storageBasePath","serverBasePath","oidcUrl","REACT_APP_OIDC_URL","AuthStore","constructor","instance","_data","accessToken","log","tokenObj","nbf","auth_time","exp","setItem","AUTH_CONFIG","expireat","refreshToken","deleteRefreshToken","removeItem","firstName","emailId","deleteFirstName","lastName","deleteLastName","role","deleteRole","emptyStore","freeze","BackArrow","viewBox","fill","d","LogoMain","Header","Content","Footer","Layout","LayoutComp","history","showsubheader","isReport","gotPage","pagename","borderRadiusLG","theme","useToken","windowWidth","setWindowWidth","useState","innerWidth","isMobileView","useEffect","handleResize","addEventListener","removeEventListener","items","label","onClick","FilePptOutlined","icon","SettingOutlined","handleLogout","location","href","LogoutOutlined","unshift","CloudUploadOutlined","UserOutlined","display","alignItems","Avatar","Dropdown","menu","Space","MoreOutlined","padding","minHeight","Date","getFullYear","Navigation","isDisabledNext","handleNext","handleReset","isReset","handleBack","isBack","resetText","nexttext","isSHowMessage","Button","disabled","size","minWidth","categorySlice","createSlice","initialState","loader","questionLoader","clientLoader","getList","alertMsg","catgoriesList","selectedCategories","years","questionnaireNames","isFetch","reducers","getCategoryList","state","setCategories","payload","startLoading","stopLoading","setNewUser","resetStateOnUnmount","setSelectedCategories","_","getQuestionList","stopQuesLoading","getClientList","stopClientLoading","starQuestiontLoading","setYears","_ref3","setQuestionnaireNames","_ref4","setClientNames","_ref5","clientNames","setQuestionData","_ref6","emptyQuestionData","categoryAction","actions","INITIAL_STATE","isAuthorized","loading","tokenExpired","userData","isError","errorDetails","userRole","userProfile","authSlice","getUserInfo","setUserInfo","authError","setTokenExpired","setError","loginfalse","getUserRole","setUserRole","setUserProfile","authAction","questionSlice","questionsList","selectedQuestions","reportName","setQuestions","setSelectedQuestions","setReportName","questionAction","acountsSlice","errorMsg","emptyState","setErrorMsg","accountsAction","reportSlice","filterLoader","questionsLoader","chartLoader","surveyQues","surveyQuesCrosstab","questionsData","chartData","searchLoading","searchData","excelData","getQuestionaireList","setSurveyQues","setSurveyQuesCrosstab","getFilter","stopLoadingFilter","setFilterData","getChartData","stopChartLoader","setChartData","chartDataCrossTab","_ref7","_ref8","setSearchData","_ref9","setExcelData","_ref10","resetallData","reportAction","managequesSlice","managequesAction","rootReducer","auth","accounts","reports","manageques","store","configureStore","reducer","webApiGet","url","axios","get","webApiPut","put","webApiPost","post","interceptors","request","use","_accessToken","headers","Authorization","Promise","reject","response","_error$response","status","dispatch","getYearsApi","questionnaireNamesApi","query","year","client","getUserProfile","clientNamesApi","fetchCategories","fetchYears","fetchquestionnaireNames","fetchgetQuestionsById","getQuestionsByIdApi","handleCategoriesSelection","selectedval","emptyQuestionbyId","Dashbord","useDispatch","currentSelect","setCurrentSelect","Row","marginBottom","Col","span","src","SurveyVault","alt","offset","SurveyInsight","ErrorPage","_errorDetails$respons","_errorDetails$respons2","_errorDetails$respons3","_errorDetails$respons4","isHideuserInfo","dangerouslySetInnerHTML","__html","DownloadModal","isModalOpen","handleOk","handleCancel","activeKey","setActiveKey","currentQuestion","setCurrentQuestion","curentqTitle","setCurentqTitle","categoriesState","useSelector","firstyear","handleQnameChange","e","target","qtitle","Modal","open","onOk","onCancel","centered","footer","handleDownload","CloudDownloadOutlined","handleGetQuestion","Tabs","tabPosition","tabBarExtraContent","onChange","Radio","Group","fetchQuestions","getQuestionsApi","updatedQuestion","copydata","setUpdatedQuestion","selectedIds","questionIds","catlist","setSelectedQuestion","handleQuestionsSelection","handleReportName","reportname","QuestionCategory","questionsState","setIsModalOpen","localReportName","setLocalReportName","hasError","setHasError","showModal","Checkbox","val","childitem","cindex","justifyContent","Typography","Title","margin","Input","placeholder","TabPane","Questions","defaultActiveKey","questionCat","tab","list","handleChange","copylist","styles","qcheckboxgroup","questionCtrl","subcat","React","Fragment","questionItem","_selectedQuestions$in","questionResize","notSelected","quesType","litwocol","isSelected","active","quetionOptions","selectall","Download","boximage","ExcelIcon","finaldata","WordIcon","handleDownloadWord","handleHomebtn","WarningModal","closable","handleClickOnLogout","origin","updateProfile","updateProfileApi","success","StopLoading","updatePassword","updatePasswordApi","_error$response$data","errorMessage","formItemLayout","labelCol","xs","sm","wrapperCol","AccountSettings","userFirstName","userLastName","form","Form","useForm","passwordForm","isUserFormValid","setIsUserFormValid","isPasswordUpdateButtonDisabled","setIsPasswordUpdateButtonDisabled","setFieldsValue","email","resetFields","gutter","Card","layout","onFinish","autoComplete","onFieldsChange","handleUserFormChange","hasErrors","getFieldsError","some","errors","Item","rules","readOnly","required","htmlType","Alert","currentPassword","newPassword","handlePasswordFormChange","hasEmptyRequiredFields","getFieldsValue","Password","pattern","dependencies","getFieldValue","validator","resolve","downloadPPTmulti","surveyData","fileName","isCrossTab","isMulti","baseColors","pptx","PptxGenJS","all","chartOptions","w","h","chartColors","survey","dataLabelFormatCode","dataLabelColor","dataLabelFontFace","dataLabelFontSize","showValue","catAxisLabelFontSize","showAxisLabels","valAxisHidden","showPercent","slide","addSlide","addImage","addText","surveyQId","base","showLegend","legendFontSize","legendPos","barGrouping","stackArr","uniqStack","Set","mergedData","mergeStackedData","addChart","ChartType","writeFile","compression","verbose","fetchquestionnaireNamesReports","_err$response2","notification","description","placement","fetchSurveyQues","_err$response4","fetchSurveyQuesCrossTab","_err$response5","fetchSurveyFilters","_err$response6","fetchSurveyChartData","chartdata","cdata","apiResponse","crossQId","Array","formattedSeries","keys","processChartData","_err$response7","fetchSearch","_err$response8","fetchExcelData","qObj","downloadExcel","questionSet","sheetData","headerRow","opt","baseRow","aoa_to_sheet","baseCell","encode_cell","r","s","_err$response9","getChartOptions","seriesData","marginRight","labelFormatter","pointWidth","Search","SearchQues","updateSearchData","searchTerm","setSearchTerm","isModalVisible","setIsModalVisible","setErrorMessage","resultdata","handleSearchChange","handleSearchClick","opacity","visibility","allowClear","defaultValue","onSearch","enterButton","handleCancelModal","Spin","study","yearindex","studyId","studyItem","Table","rowKey","dataSource","studyName","pagination","record","Empty","NoDataToDisplay","Highcharts","extendedColors","i","Color","brighten","setOptions","colors","viewoptions","Reports","selectedYear","setSelectedYear","setSelectedQuestionaire","setSelectedQues","currentView","setCurrentView","changedValue","setChangedValue","selectedFilter","setSelectedFilter","setChartHeight","innerHeight","isSearch","setIsSearch","setSelectedQuesCrossTab","isFullSurvey","setIsFullSurvey","setQType","currentQues","setCurrentQues","reportStates","chartAreaRef","useRef","_err$response","current","clientHeight","_err$response3","_surveyQues$find","qid","find","chartdataPayload","handleQuestionChange","_surveyQues$find2","handleQuestionChangeCrossTab","handleNextQues","direction","adjacenttId","arr","currentId","currentIndex","findIndex","adjacentIndex","getAdjacentObjectId","handleClear","formvalue","handleonFieldChange","changedField","fieldname","prevItems","singleDownload","tableID","fn","table","document","getElementById","wb","ws","table_to_sheet","exportTableToExcel","isSidebarVisible","setSidebarVisible","toggleSidebar","handleExcelDownload","isModal","selectedQuestionaireNameObj","firstQuestionId","lastQuestionId","MenuOutlined","cursor","Drawer","onClose","_item$options","Select","mode","showSearch","tokenSeparators","Badge","_item$options2","executeActions","searchSelectedItem","marginTop","md","onClear","ref","block","selectedview","optionType","buttonStyle","HighchartsReact","highcharts","rowSpan","colSpan","qt","stckindex","qtindex","bordered","scroll","textAlign","ditem","LeftOutlined","HomeOutlined","handleHomeButtonClick","firstquesId","RightOutlined","okText","UpdateQuestionnaire","updatequestionnaireNamesApi","duration","importData","file","importDataApi","Dragger","Upload","ImportModal","activeYear","isEdit","fileList","setFileList","yearOptions","formData","FormData","append","originFileObj","AutoComplete","test","multiple","maxCount","beforeUpload","endsWith","newFileList","UploadOutlined","shouldUpdate","ManageQuestions","setActiveYear","setColumns","editingKey","setEditingKey","nameInput","setNameInput","setIsEdit","dynamicColumns","charAt","toUpperCase","handleUpdate","nameColumn","col","EditOutlined","handleEdit","handleSave","NotFound","Link","Routes","useLocation","useHistory","tokenToUse","updateToken","pathname","Switch","fetchUserDetails","_response$data","Email","Name","Surname","responseProfile","user_Role","userroleEncrypt","encrypt","_e$response","fetUserRole","statusText","_response$data2","sessionStorage","stringify","Login","setUserData","submitForm","LoginLeftBg","CuriousLogo2","finalpayload","userInfo","ip","city","country","browserName","onFinishFailed","errorInfo","App","BrowserRouter","basename","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","ConfigProvider","colorPrimary","colorBgContainer","colorPrimaryHover","Provider"],"mappings":"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","file":"static/js/main.4b2b3368.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"boximage\":\"styles_boximage__2PyCM\"};","import React from 'react';\r\nimport './styles.scss';\r\n\r\nconst Loader = () => {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","const qtype = window.question_type;\r\nexport const STATIC_TEXT = {\r\n HFS_VALULT_SURVEY: 'HFS Vault Survey',\r\n SELECT_OPTION: 'Select Option',\r\n SELECT_OPTION_TO_DOWNLOAD_YOUR_SURVEY: 'Select option to download your survey ',\r\n SELECT_OPTION_TO_CONTINUE_WITH_THE_SURVEY: 'Select option to continue with the survey.',\r\n HFS_SURVEY_VAULT: 'HFS Survey Vault',\r\n HFS_SURVEY_INSIGHTS: 'HFS Survey Insights',\r\n HFS_SURVEY_INSIGHT: 'HFS Survey Insight',\r\n NEXT: 'Next',\r\n CANCEL: 'Cancel',\r\n QUICK_SURVEY_QUESTIONNAIRE: 'Quick Survey Questionnaire',\r\n DOWNLOAD_SURVEY: 'download survey',\r\n DOWNLOAD: 'Download',\r\n YOUR_FILE_OF_SURVEY_WILL_BE_DOWNLOAD_IN_THE_EXCEL_FORMAT:\r\n 'Your File of survey will download in the excel format.',\r\n YOUR_FILE_OF_SURVEY_WILL_BE_DOWNLOAD_IN_THE_WORD_FORMAT:\r\n 'Your File of survey will download in the word format.',\r\n MANAGE_ACCOUNT: 'Manage account',\r\n PROFILE_SUBHEADING: 'Change you first name, last name or password',\r\n MANAGE_QUESTIONS: 'Manage Questions'\r\n};\r\n\r\n// export const QUESTION_TYPE = [\r\n// 'Single select',\r\n// 'Multiple select',\r\n// 'Rank',\r\n// 'Hidden',\r\n// 'Open text response',\r\n// 'Grid',\r\n// ''\r\n// ];\r\nexport const QUESTION_TYPE = qtype;\r\n\r\nexport const NEXT_BUTTON = 'Next';\r\n","import * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport { QUESTION_TYPE } from './constants';\r\nimport CryptoJS from 'crypto-js';\r\nimport {\r\n Document,\r\n Packer,\r\n Paragraph,\r\n HeadingLevel,\r\n LevelFormat,\r\n AlignmentType,\r\n TextRun\r\n} from 'docx';\r\n\r\nconst secretKey = 'qlib secretkye for encript and decript string';\r\n\r\n/**\r\n * Function encrypt and decript string\r\n * @param {String} str - str string\r\n * @returns\r\n */\r\n\r\nexport const encrypt = (str) => {\r\n const encrypted = CryptoJS.AES.encrypt(str.toString(), secretKey).toString();\r\n return encrypted;\r\n};\r\n\r\n/**\r\n * Function decrypt and decript string\r\n * @param {String} encryptedText - encryptedText string\r\n * @returns\r\n */\r\n\r\nexport const decrypt = (encryptedText) => {\r\n // Check if encryptedText is valid\r\n if (!encryptedText) {\r\n throw new Error('Invalid input: encryptedText is required.');\r\n }\r\n\r\n try {\r\n // Perform decryption\r\n const bytes = CryptoJS.AES.decrypt(encryptedText, secretKey);\r\n\r\n // Ensure the decryption is valid (bytes can be empty if the decryption fails)\r\n if (!bytes) {\r\n throw new Error('Decryption failed: Unable to decrypt the text.');\r\n }\r\n\r\n // Convert decrypted bytes to string\r\n const decrypted = bytes.toString(CryptoJS.enc.Utf8);\r\n\r\n // If the decrypted string is empty, it means the decryption didn't work correctly\r\n if (!decrypted) {\r\n throw new Error('Decryption result is empty: The key may be incorrect.');\r\n }\r\n\r\n return decrypted;\r\n } catch (error) {\r\n console.error('Error during decryption:', error);\r\n throw new Error('Decryption failed: ' + error.message);\r\n }\r\n};\r\n\r\n/**\r\n * Function parses jwt token and returns info\r\n * @param {String} token - jwt string\r\n * @returns\r\n */\r\n\r\nexport const parseJwt = (token = '') => {\r\n if (!token) {\r\n return {};\r\n }\r\n try {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map((c) => `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`)\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n } catch (err) {\r\n return {};\r\n }\r\n};\r\n\r\n/**\r\n * Function converts date string into format DD MonthName Year\r\n * @param {String} date - date string\r\n * @returns\r\n */\r\nexport const parseDateString = (date = '') => {\r\n if (!date) {\r\n return '';\r\n }\r\n\r\n const dateObject = new Date(date);\r\n const month = dateObject.toLocaleString('default', { month: 'short' });\r\n\r\n return `${dateObject.getDate()} ${month} ${dateObject.getFullYear()}`;\r\n};\r\n\r\nexport const setSelectedQuestion = (data) => {\r\n let questionIds = [];\r\n\r\n data.forEach((category) => {\r\n let catlist = [];\r\n category.subcategories.forEach((subcategory) => {\r\n subcategory.questions.forEach((question) => {\r\n catlist.push(question.precode);\r\n });\r\n });\r\n questionIds.push(catlist);\r\n });\r\n return questionIds;\r\n};\r\nexport const setUpdatedQuestion = (data) => {\r\n let copydata = [...data];\r\n copydata.forEach((category) => {\r\n category.subcategories.forEach((subcategory) => {\r\n subcategory.questions.forEach((question) => {\r\n question.precode = `${category.id}_${subcategory.id}_${question.id}`;\r\n (question.category = category.title), (question.subcategory = subcategory.title);\r\n });\r\n });\r\n });\r\n return copydata;\r\n};\r\n\r\nexport const filterQuestionsById = (data, questionIdArr) => {\r\n return data\r\n .map((category, index) => ({\r\n ...category, // Keep other properties in category\r\n subcategories: category.subcategories\r\n .map((subcategory) => ({\r\n ...subcategory, // Keep other properties in subcategory\r\n\r\n questions: subcategory.questions.filter((question) =>\r\n questionIdArr[index].includes(question.precode)\r\n )\r\n }))\r\n .filter((subcategory) => subcategory.questions.length > 0) // Filter out subcategories without questions\r\n }))\r\n .filter((category) => category.subcategories.length > 0); // Filter out categories without subcategories\r\n};\r\n\r\nexport const flattenData = (data) => {\r\n const flattened = [];\r\n let qno = 0;\r\n data.forEach((category) => {\r\n // flattened.push({ categoryTitle: category.title });\r\n category.subcategories.forEach((subcategory) => {\r\n subcategory.questions.forEach((question) => {\r\n qno = qno + 1;\r\n flattened.push({\r\n QNo: `Q${qno}`,\r\n // questionTitle: question.title,\r\n questionText: question.text,\r\n instruction: QUESTION_TYPE[question.type - 1],\r\n categoryTitle: category.title,\r\n categorysubTitle: subcategory.title\r\n // questionTitle: question.title\r\n });\r\n flattened.push({\r\n questionText: question.instruction\r\n });\r\n question.options.forEach((option) => {\r\n flattened.push({\r\n QNo: option.preCode,\r\n questionText: option.text\r\n });\r\n });\r\n flattened.push({ QNo: '' });\r\n });\r\n });\r\n });\r\n\r\n return flattened;\r\n};\r\n\r\nexport const exportTableToExcel = (tableID, filename = 'data.xlsx') => {\r\n const fn = removeWhiteSpace(filename);\r\n let table = document.getElementById(tableID);\r\n let wb = XLSX.utils.book_new();\r\n let ws = XLSX.utils.table_to_sheet(table);\r\n\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n XLSX.writeFile(wb, `${fn}.xlsx`);\r\n};\r\n\r\nexport const excelDownloader = (data, filename, setLoader) => {\r\n setLoader(true);\r\n const worksheet = XLSX.utils.json_to_sheet(data, { skipHeader: true });\r\n const workbook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');\r\n const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n const blob = new Blob([excelBuffer], { type: 'application/octet-stream' });\r\n\r\n saveAs(blob, `${filename}.xlsx`);\r\n\r\n setTimeout(() => {\r\n setLoader(false);\r\n }, 500);\r\n};\r\n\r\nexport const wordDownload = async (questionData, filename, setLoader) => {\r\n setLoader(true);\r\n const doc = new Document({\r\n numbering: {\r\n config: [\r\n {\r\n reference: 'my-numbering',\r\n levels: [\r\n {\r\n level: 0,\r\n format: LevelFormat.DECIMAL,\r\n text: '%1.',\r\n alignment: AlignmentType.START,\r\n style: {\r\n paragraph: {\r\n indent: { left: 720, hanging: 260 }\r\n }\r\n }\r\n },\r\n {\r\n level: 1,\r\n alignment: AlignmentType.START,\r\n style: {\r\n paragraph: {\r\n indent: { left: 1440, hanging: 360 }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n sections: [\r\n {\r\n properties: { font: 'Arial' },\r\n children: questionData?.flatMap((item) => [\r\n new Paragraph({\r\n children: []\r\n }),\r\n new Paragraph({\r\n text: item.title,\r\n heading: HeadingLevel.HEADING_1\r\n }),\r\n\r\n ...item.subcategories.flatMap((subcategory) => [\r\n ...subcategory.questions.flatMap((question) => [\r\n new Paragraph({\r\n children: []\r\n }),\r\n new Paragraph({\r\n children: [\r\n new TextRun({\r\n text: question.text,\r\n font: 'Arial',\r\n bold: true\r\n }),\r\n new TextRun({\r\n text: ` (${QUESTION_TYPE[question.type - 1]})`,\r\n font: 'Arial',\r\n italics: true\r\n })\r\n ],\r\n numbering: {\r\n reference: 'my-numbering', // Correct numbering reference\r\n level: 0 // Use level 0 since that’s what you configured\r\n }\r\n }),\r\n new Paragraph({\r\n children: [\r\n new TextRun({\r\n text: ` ${question.instruction}`,\r\n font: 'Arial',\r\n italics: true\r\n })\r\n ]\r\n }),\r\n\r\n ...question.options.map(\r\n (option) =>\r\n new Paragraph({\r\n children: [\r\n new TextRun({\r\n text: `${option.preCode} - ${option.text}`, // Add tab before text\r\n font: 'Arial'\r\n })\r\n ],\r\n numbering: {\r\n reference: 'my-numbering', // Correct numbering reference\r\n level: 1 // Use level 0 since that’s what you configured\r\n }\r\n })\r\n )\r\n ])\r\n ])\r\n ])\r\n }\r\n ]\r\n });\r\n\r\n // Create a buffer and save the file\r\n const buffer = await Packer.toBuffer(doc);\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\r\n });\r\n\r\n saveAs(blob, `${filename}.docx`);\r\n setTimeout(() => {\r\n setLoader(false);\r\n }, 500);\r\n};\r\n\r\nexport const filterObj = (\r\n values,\r\n filtersData,\r\n selectedQues,\r\n selectedQuestionaire,\r\n isExcel = false,\r\n selectedQuesCrossTab = ''\r\n) => {\r\n const filters = filtersData\r\n ?.map((item) => {\r\n if (values[item.id]) {\r\n return {\r\n key: item.id,\r\n value: values[item.id]\r\n };\r\n }\r\n return null;\r\n })\r\n .filter((filter) => filter !== null);\r\n\r\n const finalfilter = filters.filter((item) => item.value.length > 0);\r\n if (isExcel) {\r\n const transformedData = { qusetionnaireId: selectedQuestionaire, filters: finalfilter };\r\n return transformedData;\r\n }\r\n const transformedData = {\r\n QusetionnaireId: selectedQuestionaire,\r\n qId: selectedQues,\r\n cqId: selectedQuesCrossTab,\r\n filters: finalfilter\r\n };\r\n return transformedData;\r\n};\r\n\r\nexport const createSingleData = (datanew) => {\r\n const transformedData = {\r\n qText: datanew.options.map((option) => option.name),\r\n options: {\r\n name: datanew.qText[0],\r\n data: datanew.options.map((option) => option.data[0]),\r\n count: datanew.options.map((option) => option.count[0]),\r\n showInLegend: false\r\n }\r\n };\r\n return transformedData;\r\n};\r\nexport const filterZeroValue = (cdata, showInLegend) => {\r\n const copycdata = [...cdata];\r\n const filteredData = copycdata.map((item) => {\r\n const { name, data } = item;\r\n const fData = data.filter((item) => item > 0);\r\n return { name: name, data: fData, showInLegend: !showInLegend };\r\n });\r\n return filteredData;\r\n};\r\nexport const createChartData = (type, data, chartHeight, selectedQuesCrossTab) => {\r\n const questionLength = data.qText.length;\r\n let dynamictype = type;\r\n let noofBar = 0;\r\n\r\n // const datanew = questionLength > 1 ? data : createSingleData(data);\r\n const datanew = questionLength > 1 ? data : createSingleData(data);\r\n\r\n let columnSetting = {\r\n pointPadding: 0,\r\n borderWidth: 0\r\n // stacking: 'stacking'\r\n };\r\n let seriesoption = {\r\n dataLabels: {\r\n // format: '{y} %',\r\n enabled: true,\r\n formatter: function () {\r\n let index = this.point.index;\r\n let count = this.series.options?.count[index];\r\n return `${this.y} % , (N: ${\r\n count !== undefined ? count : 'N/A'\r\n })`;\r\n },\r\n style: {\r\n fontFamily: 'Poppins'\r\n }\r\n }\r\n };\r\n // let tooltipdata = {\r\n // headerFormat: '{point.y}%
',\r\n // pointFormat: ''\r\n // };\r\n\r\n const { qText, options: qoption, qType = 0 } = datanew;\r\n if (qType === 4 || selectedQuesCrossTab != '') {\r\n seriesoption = { ...seriesoption, stacking: 'normal' };\r\n }\r\n\r\n let qoptionData = [qoption];\r\n if (data.qText.length > 1) {\r\n qoptionData = qoption;\r\n noofBar = qoption[0].data.length * 1.5;\r\n if (qType === 4) {\r\n noofBar = qoption[0].data.length;\r\n }\r\n if (qoption[0].data.length > 7) {\r\n dynamictype = 'bar';\r\n }\r\n } else {\r\n noofBar = qoption?.data.length;\r\n if (qoption?.data.length > 7) {\r\n dynamictype = 'bar';\r\n }\r\n }\r\n // const filtereddata = filterZeroValue(qoptionData, questionLength === 1);\r\n\r\n const filtereddata = qoptionData;\r\n const options = {\r\n chart: {\r\n type: dynamictype,\r\n height: dynamictype === 'bar' ? noofBar * 60 : chartHeight - 50\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n title: {\r\n text: ''\r\n },\r\n subtitle: {\r\n text: ''\r\n },\r\n xAxis: {\r\n categories: qText,\r\n crosshair: true\r\n },\r\n legend: {\r\n verticalAlign: 'top'\r\n },\r\n yAxis: {\r\n min: 0,\r\n labels: {\r\n enabled: false // Disables the Y-axis labels\r\n },\r\n title: {\r\n text: ''\r\n },\r\n gridLineWidth: 0, // Removes the horizontal grid lines\r\n lineWidth: 0, // Removes the Y-axis line itself\r\n tickWidth: 0 // Removes the ticks on the Y-axis\r\n },\r\n tooltip: {\r\n backgroundColor: '#ffffff',\r\n borderColor: '#7438f2',\r\n borderRadius: 10,\r\n borderWidth: 2,\r\n style: {\r\n color: '#333',\r\n fontSize: '14px',\r\n width: 250\r\n },\r\n formatter: function () {\r\n let index = this.point.index;\r\n let count = this.series.options?.count[index];\r\n return `${this.x}
${\r\n this.series.name\r\n } = ${this.y}% (N: ${\r\n count !== undefined ? count : 'N/A'\r\n })`;\r\n },\r\n shadow: true,\r\n useHTML: false,\r\n shared: false,\r\n maxWidth: 250\r\n },\r\n plotOptions: {\r\n column: columnSetting,\r\n series: seriesoption,\r\n bar: {\r\n groupPadding: 0.1,\r\n dataLabels: {\r\n enabled: true,\r\n style: {\r\n fontFamily: 'Poppins'\r\n },\r\n formatter: function () {\r\n let index = this.point.index;\r\n let count = this.series.options?.count[index];\r\n if (this.y != 0) {\r\n return `${this.y} %, (N: ${\r\n count !== undefined ? count : 'N/A'\r\n })`;\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n series: filtereddata, //qoptionData,\r\n noData: {\r\n style: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n color: '#7438f2'\r\n },\r\n position: {\r\n align: 'center',\r\n verticalAlign: 'middle',\r\n x: 0,\r\n y: 0\r\n },\r\n text: 'No data available'\r\n }\r\n };\r\n // console.log('options', options);\r\n return options;\r\n};\r\n\r\nconst groupByStack = (data) => {\r\n const grouped = {};\r\n\r\n data.forEach(({ name, data, stack, count }) => {\r\n if (!grouped[name]) {\r\n grouped[name] = { stack: [], name };\r\n }\r\n\r\n grouped[name].stack.push({\r\n [stack]: { data, count }\r\n });\r\n });\r\n\r\n return Object.values(grouped);\r\n};\r\nexport const createTabledata = (data, isMultiTable) => {\r\n // console.log(isMultiTable, data);\r\n let groupbystack = [];\r\n if (isMultiTable) {\r\n groupbystack = groupByStack(data.options);\r\n\r\n // console.log('groupbystack', groupbystack);\r\n // Object.keys(groupbystack).forEach(function (key) {\r\n // console.log(key, groupbystack[key]);\r\n // groupbystack[key].forEach(function(data) {\r\n\r\n // })\r\n // });\r\n const finaldata = {\r\n crossMulti: { quesText: data.qText, groupbystack }\r\n };\r\n return finaldata;\r\n }\r\n\r\n if (data.hasOwnProperty('options')) {\r\n if (data.options.length > 7) {\r\n // console.log('kkkkkkkkkk2', data.options);\r\n const result = {\r\n columns: [\r\n {\r\n title: 'Option',\r\n dataIndex: 'option',\r\n key: 'option',\r\n width: '45%'\r\n }\r\n ],\r\n tableData: []\r\n };\r\n\r\n // Add columns dynamically based on the \"qText\" (questions)\r\n if (data.qText) {\r\n data.qText.forEach((question, index) => {\r\n result.columns.push({\r\n title: question,\r\n dataIndex: `q${index}`,\r\n key: `q${index}`,\r\n render: (data) => {\r\n const dataarr = data.split('$$$$');\r\n return (\r\n <>\r\n {dataarr[0]} {dataarr[1] && {dataarr[1]}}\r\n \r\n );\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Create rows dynamically based on the \"options\" data (each option will be in a row)\r\n if (data.options) {\r\n data.options.forEach((option, index) => {\r\n const rowData = {\r\n key: index,\r\n option: option.name\r\n };\r\n // Add the value (percentage) for each option in the second, third, etc. columns\r\n if (data.qText) {\r\n data.qText.forEach((question, qIndex) => {\r\n const count = option.count[qIndex];\r\n rowData[`q${qIndex}`] =\r\n option.data[qIndex] +\r\n '%' +\r\n ` $$$$(N: ${count && count !== undefined ? count : 'N/A'})`;\r\n });\r\n }\r\n\r\n result.tableData.push(rowData);\r\n });\r\n }\r\n\r\n return result;\r\n } else {\r\n const result = {\r\n columns: [\r\n {\r\n title: 'Question',\r\n dataIndex: 'question',\r\n key: 'question',\r\n width: '45%'\r\n }\r\n ],\r\n tableData: []\r\n };\r\n\r\n // Create columns dynamically based on the \"options\" names\r\n if (data.options) {\r\n data?.options.forEach((option, index) => {\r\n result.columns.push({\r\n title: option.name,\r\n dataIndex: `option${index}`,\r\n key: `option${index}`,\r\n render: (data) => {\r\n const dataarr = data.split('$$$$');\r\n return (\r\n <>\r\n {dataarr[0]} {dataarr[1] && {dataarr[1]}}\r\n \r\n );\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Loop through qText to create the table data\r\n if (data.qText) {\r\n data?.qText.forEach((question, index) => {\r\n const rowData = {\r\n key: index,\r\n question: question\r\n };\r\n\r\n // Add option data for each question\r\n\r\n data.options.forEach((option, optIndex) => {\r\n const count = option.count[index];\r\n\r\n rowData[`option${optIndex}`] =\r\n option.data[index] +\r\n '%' +\r\n ` $$$$(N: ${count && count !== undefined ? count : 'N/Aa'})`;\r\n });\r\n\r\n result.tableData.push(rowData);\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n } else {\r\n return { columns: [], tableData: [] };\r\n }\r\n};\r\n\r\nexport const getBaseValue = (allques, selectedId) => {\r\n if (selectedId === '') {\r\n return '';\r\n }\r\n const selectedQuestion = allques.find((item) => item.id === selectedId);\r\n\r\n return selectedQuestion.base;\r\n};\r\n\r\nexport const getAdjacentObjectId = (arr, currentId, direction = 'next') => {\r\n const currentIndex = arr.findIndex((item) => item.id === currentId);\r\n\r\n if (currentIndex === -1) {\r\n return undefined;\r\n }\r\n let adjacentIndex;\r\n if (direction === 'next') {\r\n adjacentIndex = currentIndex + 1;\r\n } else if (direction === 'previous') {\r\n adjacentIndex = currentIndex - 1;\r\n } else {\r\n return undefined;\r\n }\r\n\r\n if (adjacentIndex < 0 || adjacentIndex >= arr.length) {\r\n return undefined;\r\n }\r\n return arr[adjacentIndex].id;\r\n};\r\n\r\nexport const getFirstAndLastQuestionId = (questions) => {\r\n if (questions.length === 0) {\r\n return { firstQuestionId: null, lastQuestionId: null };\r\n }\r\n const firstQuestionId = questions[0].id;\r\n const lastQuestionId = questions[questions.length - 1].id;\r\n\r\n return {\r\n firstQuestionId,\r\n lastQuestionId\r\n };\r\n};\r\n\r\nexport const isObjectBlank = (obj) => {\r\n return Object.keys(obj).length === 0 && obj.constructor === Object;\r\n};\r\n\r\nexport const downloadExcel = (data, fileName) => {\r\n const workbook = XLSX.utils.book_new();\r\n\r\n data.forEach((questionSet) => {\r\n let sheetData = [];\r\n\r\n if (questionSet.options.length > 7) {\r\n sheetData.push([...questionSet.qText]);\r\n // Case 1: If there are more than 7 options, \"Options\" will be in the first column\r\n const headerRow = ['Option', 'Resp %', 'N'];\r\n sheetData.push(headerRow);\r\n\r\n questionSet.options.forEach((option) => {\r\n let rowData = [option.name];\r\n\r\n questionSet.qText.forEach((_, qIndex) => {\r\n const count = option.count[qIndex] || 'N/A';\r\n // rowData.push(`${option.data[qIndex]}% (Count: ${count})`);\r\n rowData.push(`${option.data[qIndex]}%`);\r\n rowData.push(count);\r\n });\r\n\r\n sheetData.push(rowData);\r\n });\r\n } else {\r\n // Case 2: If 7 or fewer options, \"Questions\" will be in the first column\r\n // const headerRow = ['Question', ...questionSet.options.map((opt) => opt.name)];\r\n const headerRow = ['Question', ...questionSet.options.flatMap((opt) => [opt.name, 'N'])];\r\n\r\n // console.log('headerRow', headerRow);\r\n\r\n sheetData.push(headerRow);\r\n\r\n questionSet.qText.forEach((qText, qIndex) => {\r\n let rowData = [qText];\r\n\r\n questionSet.options.forEach((option) => {\r\n const count = option.count[qIndex] || 'N/A';\r\n // rowData.push(`${option.data[qIndex]}% (Count: ${count})`);\r\n rowData.push(`${option.data[qIndex]}%`);\r\n rowData.push(count);\r\n });\r\n\r\n sheetData.push(rowData);\r\n });\r\n }\r\n // console.log('sheetData', sheetData);\r\n const baseRow = ['Base', questionSet.base];\r\n sheetData.push(baseRow);\r\n\r\n // Convert array to worksheet\r\n const worksheet = XLSX.utils.aoa_to_sheet(sheetData);\r\n\r\n const baseCell = worksheet[XLSX.utils.encode_cell({ r: sheetData.length - 1, c: 0 })];\r\n if (baseCell) {\r\n baseCell.s = { font: { bold: true } };\r\n }\r\n XLSX.utils.book_append_sheet(workbook, worksheet, `${questionSet?.surveyQId}`);\r\n });\r\n\r\n // Write and download the file\r\n XLSX.writeFile(workbook, `${fileName}.xlsx`);\r\n};\r\n\r\nexport const processChartData = (cdata) => {\r\n const { chartDataCrossTab: apiResponse } = cdata;\r\n const { base, crossQId, qType, surveyQId, title } = apiResponse;\r\n\r\n const qText = apiResponse.qText; // X-axis categories\r\n const series = {};\r\n\r\n apiResponse.options.forEach((option) => {\r\n const { name, data, stack } = option;\r\n\r\n if (!series[name]) {\r\n series[name] = {};\r\n }\r\n\r\n if (!series[name][stack]) {\r\n series[name][stack] = Array(qText.length).fill(0);\r\n }\r\n\r\n data.forEach((value, index) => {\r\n series[name][stack][index] += value;\r\n });\r\n });\r\n\r\n // Convert series object into Highcharts-friendly format\r\n const formattedSeries = [];\r\n Object.keys(series).forEach((name) => {\r\n Object.keys(series[name]).forEach((stack) => {\r\n formattedSeries.push({\r\n name: name,\r\n data: series[name][stack],\r\n stack: stack,\r\n count: series[name][stack]\r\n });\r\n });\r\n });\r\n\r\n return {\r\n chartDataCrossTab: { qText, options: formattedSeries, base, crossQId, qType, surveyQId, title }\r\n };\r\n};\r\n\r\nexport const removeWhiteSpace = (str) => {\r\n return str.replace(/\\s+/g, '_').replace(/[^a-zA-Z0-9_]/g, '_');\r\n};\r\n","import React, { Suspense } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Loader from 'components/ui/Loader';\r\nimport { decrypt } from 'utils/functions';\r\n\r\n// eslint-disable-next-line react/prop-types\r\nexport function PrivateRoute({ component: Component, path, exact, token }) {\r\n const primaryComp = (\r\n (\r\n }>\r\n \r\n \r\n )}\r\n />\r\n );\r\n const route = token ? primaryComp : } />;\r\n\r\n return route;\r\n}\r\nexport function PrivateRouteAdmin({ component: Component, path, exact, token }) {\r\n const usertypestr = localStorage.getItem('usertype');\r\n const usertype = decrypt(usertypestr);\r\n const primaryComp = (\r\n (\r\n }>\r\n \r\n \r\n )}\r\n />\r\n );\r\n const route = token && usertype == 1 ? primaryComp : } />;\r\n\r\n return route;\r\n}\r\n\r\nPrivateRoute.defaultProps = {\r\n exact: false,\r\n token: null\r\n};\r\n\r\nPrivateRoute.propTypes = {\r\n exact: PropTypes.bool,\r\n token: PropTypes.string,\r\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired\r\n};\r\n","export const NAVIGATION = {\r\n HomePage: '/',\r\n Login: '/login',\r\n dashboard: '/dashboard',\r\n category: '/question_category',\r\n question: '/questions',\r\n download: '/download',\r\n settings: '/manage_account',\r\n insight: '/insight',\r\n managequestions: '/managequestions'\r\n};\r\n\r\nexport const AUTH_STATUS = {\r\n Pending: 0,\r\n Authorized: 1,\r\n Unauthorized: 2\r\n};\r\n\r\nexport const STATUS_CODE = {\r\n Ok: 200,\r\n Created: 201,\r\n Deleted: 204,\r\n Error: 400,\r\n TokenExpired: 401\r\n};\r\n\r\nexport const UNAUTHORIZED_MSG = 'You are not authorized to view this application.';\r\n\r\nexport const ALERT_MESSAGE_TIME = 6000;\r\n\r\nexport const ALERT_MSG_SEVERITY = {\r\n SUCCESS: 'success',\r\n ERROR: 'error'\r\n};\r\n","const AUTH0 = {\r\n appBasePath: process.env.REACT_APP_BASE_PATH,\r\n storageBasePath: process.env.REACT_APP_STORAGE_PATH,\r\n serverBasePath: process.env.REACT_APP_SERVER_BASE_PATH,\r\n oidcUrl: process.env.REACT_APP_OIDC_URL\r\n};\r\nexport default AUTH0;\r\n","import AUTH_CONFIG from 'utils/authConfig';\r\nimport { parseJwt } from 'utils/functions';\r\n\r\nclass AuthStore {\r\n constructor() {\r\n if (!AuthStore.instance) {\r\n this._data = localStorage;\r\n AuthStore.instance = this;\r\n }\r\n\r\n return AuthStore.instance;\r\n }\r\n\r\n set accessToken(value) {\r\n console.log('value', value);\r\n const tokenObj = parseJwt(value);\r\n const { nbf: auth_time = 0, exp = 0 } = tokenObj;\r\n this._data.setItem(`authtime-${AUTH_CONFIG.storageBasePath}`, auth_time);\r\n this._data.setItem(`expireat-${AUTH_CONFIG.storageBasePath}`, exp);\r\n this._data.setItem(`accessToken-${AUTH_CONFIG.storageBasePath}`, value);\r\n }\r\n\r\n get expireat() {\r\n return this._data.getItem(`expireat-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n get accessToken() {\r\n return this._data.getItem(`accessToken-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n set refreshToken(value) {\r\n this._data.setItem(`refreshToken-${AUTH_CONFIG.storageBasePath}`, value);\r\n }\r\n\r\n get refreshToken() {\r\n return this._data.getItem(`refreshToken-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n deleteRefreshToken() {\r\n this._data.removeItem(`refreshToken-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n set firstName(value) {\r\n this._data.setItem(`firstName-${AUTH_CONFIG.storageBasePath}`, value);\r\n }\r\n\r\n get firstName() {\r\n return this._data.getItem(`firstName-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n set emailId(value) {\r\n this._data.setItem(`emailId-${AUTH_CONFIG.storageBasePath}`, value);\r\n }\r\n\r\n get emailId() {\r\n return this._data.getItem(`emailId-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n deleteFirstName() {\r\n this._data.removeItem(`firstName-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n set lastName(value) {\r\n this._data.setItem(`lastName-${AUTH_CONFIG.storageBasePath}`, value);\r\n }\r\n\r\n get lastName() {\r\n return this._data.getItem(`lastName-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n deleteLastName() {\r\n this._data.removeItem(`lastName-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n set role(value) {\r\n this._data.setItem(`role-${AUTH_CONFIG.storageBasePath}`, value);\r\n }\r\n\r\n get role() {\r\n return this._data.getItem(`role-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n deleteRole() {\r\n this._data.removeItem(`role-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n\r\n emptyStore() {\r\n this._data.removeItem(`accessToken-${AUTH_CONFIG.storageBasePath}`);\r\n this._data.removeItem(`refreshToken-${AUTH_CONFIG.storageBasePath}`);\r\n this._data.removeItem(`firstName-${AUTH_CONFIG.storageBasePath}`);\r\n this._data.removeItem(`lastName-${AUTH_CONFIG.storageBasePath}`);\r\n this._data.removeItem(`role-${AUTH_CONFIG.storageBasePath}`);\r\n this._data.removeItem(`expireat-${AUTH_CONFIG.storageBasePath}`);\r\n this._data.removeItem(`authtime-${AUTH_CONFIG.storageBasePath}`);\r\n }\r\n}\r\n\r\nconst instance = new AuthStore();\r\nObject.freeze(instance);\r\n\r\nexport default instance;\r\n","export const ExpandIcon = ({ isActive }) => {\r\n return (\r\n <>\r\n {isActive ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const BackArrow = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport const LogoMain = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport const UploadIcon = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Layout, theme, Avatar, Dropdown, Space } from 'antd';\r\nimport {\r\n UserOutlined,\r\n MoreOutlined,\r\n LogoutOutlined,\r\n SettingOutlined,\r\n CloudUploadOutlined,\r\n FilePptOutlined\r\n /* FileExcelOutlined,\r\n \r\n FilePdfOutlined, */\r\n /* DownOutlined */\r\n} from '@ant-design/icons';\r\nimport AuthStore from 'common/authStore';\r\nimport './styles.scss';\r\n// import { Logo } from 'assets';\r\nimport { LogoMain } from 'utils/svg';\r\nimport { decrypt } from 'utils/functions';\r\n\r\nconst { Header, Content, Footer } = Layout;\r\n\r\nconst LayoutComp = ({ children, history, showsubheader = true, isReport = false }) => {\r\n const usertypestr = localStorage.getItem('usertype');\r\n const usertype = decrypt(usertypestr);\r\n\r\n const handleLogout = () => {\r\n localStorage.removeItem('usertype');\r\n AuthStore.emptyStore();\r\n window.location.href = '/';\r\n };\r\n const gotPage = (pagename) => {\r\n history.push(pagename);\r\n };\r\n const {\r\n token: { borderRadiusLG }\r\n } = theme.useToken();\r\n\r\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\r\n const isMobileView = windowWidth <= 650;\r\n\r\n useEffect(() => {\r\n const handleResize = () => setWindowWidth(window.innerWidth);\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n /* const handledownload = (type) => {\r\n console.log(type);\r\n }; */\r\n const items = [\r\n {\r\n label: (\r\n
gotPage('/manage_account')}>\r\n Manage account \r\n
\r\n ),\r\n key: '1',\r\n icon: \r\n },\r\n {\r\n label:
Logout
,\r\n key: '2',\r\n icon: \r\n }\r\n ];\r\n\r\n // Add \"Manage Questions\" and \"Hi, User\" to the dropdown in mobile view\r\n if (isMobileView) {\r\n if (usertype == 1) {\r\n items.unshift({\r\n label: (\r\n
gotPage('/managequestions')}>\r\n Manage Questions \r\n
\r\n ),\r\n key: '3',\r\n icon: \r\n });\r\n }\r\n items.unshift({\r\n label: (\r\n
\r\n Hi, {AuthStore.firstName}\r\n
\r\n ),\r\n key: '4',\r\n icon: \r\n });\r\n }\r\n /* const downloaditems = [\r\n {\r\n label: (\r\n
handledownload('/manage_account')}>\r\n Manage account \r\n
\r\n ),\r\n key: '1',\r\n icon: \r\n },\r\n {\r\n label:
handledownload('/manage_account')}>Logout
,\r\n key: '2',\r\n icon: \r\n }\r\n ]; */\r\n return (\r\n \r\n
\r\n
gotPage('/')}>\r\n {/* \"Logo\" */}\r\n \r\n
\r\n\r\n {/*
\r\n gotPage('/')}>\r\n home\r\n \r\n | */}\r\n {/* \r\n e.preventDefault()}>\r\n \r\n Hover me\r\n \r\n \r\n \r\n */}\r\n {/* | */}\r\n {/* {usertype == 1 && (\r\n <>\r\n gotPage('/managequestions')}>\r\n Manage Questions\r\n \r\n |\r\n \r\n )}\r\n
\r\n } /> Hi, {AuthStore.firstName}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
*/}\r\n
\r\n gotPage('/')}>\r\n home\r\n \r\n |\r\n\r\n {/* Hide these items in mobile view */}\r\n {!isMobileView && usertype == 1 && (\r\n <>\r\n gotPage('/managequestions')}>\r\n Manage Questions\r\n \r\n |\r\n \r\n )}\r\n {!isMobileView && (\r\n
\r\n } /> Hi, {AuthStore.firstName}\r\n
\r\n )}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {showsubheader &&
HFS Survey Vault
}\r\n \r\n {children}\r\n \r\n
\r\n
\r\n {!isReport && `Copyright ©${new Date().getFullYear()} with Curious Insights`}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LayoutComp;\r\n","export default __webpack_public_path__ + \"static/media/login_left_img.91b076fd.svg\";","export default __webpack_public_path__ + \"static/media/survey_vault.c3973540.svg\";","export default __webpack_public_path__ + \"static/media/survey_insight.ab22b5f6.svg\";","export default __webpack_public_path__ + \"static/media/excel_icon.e1fecacf.svg\";","export default __webpack_public_path__ + \"static/media/logo.4c18dbeb.svg\";","export default __webpack_public_path__ + \"static/media/word_icon.495b2665.svg\";","export default __webpack_public_path__ + \"static/media/curious_logo2.9650ccee.jpg\";","import React from 'react';\r\nimport './styles.scss';\r\nimport { Button } from 'antd';\r\n\r\nconst Navigation = ({\r\n isDisabledNext,\r\n handleNext,\r\n handleReset,\r\n isReset = false,\r\n handleBack,\r\n isBack = false,\r\n resetText = '',\r\n nexttext = '',\r\n isSHowMessage = false\r\n}) => {\r\n return (\r\n
\r\n \r\n {nexttext != '' ? nexttext : 'Next'}\r\n \r\n {isBack && (\r\n \r\n )}\r\n {isReset && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Navigation;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nconst INITIAL_STATE = {\r\n loader: false,\r\n questionLoader: false,\r\n clientLoader: false,\r\n getList: false,\r\n alertMsg: '',\r\n catgoriesList: [],\r\n selectedCategories: [],\r\n years: [],\r\n questionnaireNames: [],\r\n questionData: [],\r\n isFetch: false\r\n};\r\n\r\nconst categorySlice = createSlice({\r\n name: 'category',\r\n initialState: INITIAL_STATE,\r\n reducers: {\r\n getCategoryList(state) {\r\n state.loader = true;\r\n state.getList = false;\r\n state.isFetch = false;\r\n },\r\n setCategories(state, { payload }) {\r\n state.loader = false;\r\n state.getList = true;\r\n state.catgoriesList = payload;\r\n },\r\n startLoading(state) {\r\n state.loader = true;\r\n state.getList = false;\r\n },\r\n stopLoading(state) {\r\n state.loader = false;\r\n },\r\n setNewUser(state) {\r\n state.loader = false;\r\n state.getList = true;\r\n },\r\n resetStateOnUnmount(state) {\r\n state.getList = false;\r\n state.alertMsg = '';\r\n },\r\n setSelectedCategories(state, { _, payload }) {\r\n state.selectedCategories = payload;\r\n },\r\n getQuestionList(state) {\r\n state.questionLoader = true;\r\n state.getList = false;\r\n },\r\n stopQuesLoading(state) {\r\n state.questionLoader = false;\r\n },\r\n getClientList(state) {\r\n state.clientLoader = true;\r\n state.getList = false;\r\n },\r\n stopClientLoading(state) {\r\n state.clientLoader = false;\r\n },\r\n starQuestiontLoading(state) {\r\n state.loader = true;\r\n state.getList = false;\r\n },\r\n setYears(state, { payload }) {\r\n state.questionLoader = false;\r\n state.getList = true;\r\n state.years = payload;\r\n },\r\n setQuestionnaireNames(state, { payload }) {\r\n state.questionLoader = false;\r\n state.getList = true;\r\n state.questionnaireNames = payload;\r\n },\r\n setClientNames(state, { payload }) {\r\n state.clientLoader = false;\r\n state.getList = true;\r\n state.clientNames = payload;\r\n },\r\n setQuestionData(state, { payload }) {\r\n state.isFetch = true;\r\n state.questionLoader = false;\r\n state.getList = true;\r\n state.questionData = payload;\r\n },\r\n emptyQuestionData(state) {\r\n state.isFetch = false;\r\n state.questionLoader = false;\r\n state.getList = false;\r\n state.questionData = [];\r\n }\r\n }\r\n});\r\n\r\nexport const categoryAction = categorySlice.actions;\r\n\r\nexport default categorySlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport { AUTH_STATUS } from 'common/constants';\r\n\r\nconst INITIAL_STATE = {\r\n isAuthorized: AUTH_STATUS.Unauthorized,\r\n loading: false,\r\n tokenExpired: false,\r\n userData: {},\r\n isError: false,\r\n errorDetails: {},\r\n userRole: {},\r\n userProfile: {}\r\n};\r\n\r\nconst authSlice = createSlice({\r\n name: 'auth',\r\n initialState: INITIAL_STATE,\r\n reducers: {\r\n getUserInfo(state) {\r\n state.loading = true;\r\n state.isAuthorized = AUTH_STATUS.Pending;\r\n },\r\n stopLoading(state) {\r\n state.loading = false;\r\n },\r\n startLoading(state) {\r\n state.loading = true;\r\n },\r\n setUserInfo(state, { payload = {} }) {\r\n state.isAuthorized = AUTH_STATUS.Authorized;\r\n state.isError = false;\r\n state.userData = payload;\r\n state.loading = false;\r\n },\r\n authError(state) {\r\n state.loading = false;\r\n state.isAuthorized = AUTH_STATUS.Unauthorized;\r\n },\r\n setTokenExpired(state) {\r\n // state.isAuthorized = AUTH_STATUS.Unauthorized;\r\n state.tokenExpired = true;\r\n },\r\n\r\n setError(state, { payload }) {\r\n if (!payload.isError) {\r\n state.isError = false;\r\n state.errorDetails = {};\r\n } else {\r\n state.isError = true;\r\n state.errorDetails = payload.error;\r\n }\r\n },\r\n loginfalse(state) {\r\n state.isAuthorized = AUTH_STATUS.Authorized;\r\n state.loading = false;\r\n },\r\n getUserRole(state) {\r\n state.loading = true;\r\n },\r\n setUserRole(state, { payload = {} }) {\r\n state.loading = true;\r\n state.userRole = payload;\r\n },\r\n setUserProfile(state, { payload }) {\r\n state.userProfile = payload;\r\n }\r\n }\r\n});\r\n\r\nexport const authAction = authSlice.actions;\r\n\r\nexport default authSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nconst INITIAL_STATE = {\r\n loader: false,\r\n getList: false,\r\n alertMsg: '',\r\n questionsList: [],\r\n selectedQuestions: [],\r\n reportName: ''\r\n};\r\n\r\nconst questionSlice = createSlice({\r\n name: 'questions',\r\n initialState: INITIAL_STATE,\r\n reducers: {\r\n getQuestionList(state) {\r\n state.loader = true;\r\n state.getList = false;\r\n },\r\n setQuestions(state, { payload }) {\r\n state.loader = false;\r\n state.getList = true;\r\n state.questionsList = payload;\r\n },\r\n startLoading(state) {\r\n state.loader = true;\r\n state.getList = false;\r\n },\r\n stopLoading(state) {\r\n state.loader = false;\r\n },\r\n\r\n resetStateOnUnmount(state) {\r\n state.getList = false;\r\n state.alertMsg = '';\r\n },\r\n setSelectedQuestions(state, { payload }) {\r\n state.selectedQuestions = payload;\r\n },\r\n setReportName(state, { payload }) {\r\n state.reportName = payload;\r\n }\r\n }\r\n});\r\n\r\nexport const questionAction = questionSlice.actions;\r\n\r\nexport default questionSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nconst INITIAL_STATE = {\r\n loading: false,\r\n isError: false,\r\n errorDetails: {},\r\n errorMsg: ''\r\n};\r\n\r\nconst acountsSlice = createSlice({\r\n name: 'accounts',\r\n initialState: INITIAL_STATE,\r\n reducers: {\r\n startLoading(state) {\r\n state.errorDetails = {};\r\n state.loading = true;\r\n },\r\n stopLoading(state) {\r\n state.loading = false;\r\n },\r\n setError(state, { payload }) {\r\n state.errorDetails = payload;\r\n },\r\n emptyState(state) {\r\n state.errorDetails = {};\r\n state.errorMsg = '';\r\n },\r\n setErrorMsg(state, { payload }) {\r\n state.errorMsg = payload;\r\n }\r\n }\r\n});\r\n\r\nexport const accountsAction = acountsSlice.actions;\r\n\r\nexport default acountsSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nconst INITIAL_STATE = {\r\n loading: false,\r\n filterLoader: false,\r\n questionsLoader: false,\r\n chartLoader: false,\r\n questionnaireNames: [],\r\n clientNames: [],\r\n filtersData: [],\r\n surveyQues: [],\r\n surveyQuesCrosstab: [],\r\n questionsData: [],\r\n chartData: {},\r\n years: [],\r\n errorMsg: '',\r\n isFetch: false,\r\n searchLoading: false,\r\n searchData: [],\r\n excelData: []\r\n};\r\n\r\nconst reportSlice = createSlice({\r\n name: 'reports',\r\n initialState: INITIAL_STATE,\r\n reducers: {\r\n getQuestionaireList(state) {\r\n state.loading = true;\r\n state.isFetch = false;\r\n },\r\n getClientList(state) {\r\n state.loading = true;\r\n state.isFetch = false;\r\n },\r\n stopLoading(state) {\r\n state.loading = false;\r\n },\r\n setQuestionnaireNames(state, { payload }) {\r\n state.loading = false;\r\n state.isFetch = true;\r\n state.questionnaireNames = payload;\r\n },\r\n setClientNames(state, { payload }) {\r\n state.loading = false;\r\n state.isFetch = true;\r\n state.clientNames = payload;\r\n },\r\n setSurveyQues(state, { payload }) {\r\n state.isFetch = true;\r\n state.surveyQues = payload;\r\n },\r\n setSurveyQuesCrosstab(state, { payload }) {\r\n state.isFetch = true;\r\n state.surveyQuesCrosstab = payload;\r\n },\r\n getFilter(state) {\r\n state.filterLoader = true;\r\n },\r\n stopLoadingFilter(state) {\r\n state.filterLoader = false;\r\n },\r\n setFilterData(state, { payload }) {\r\n state.filterLoader = false;\r\n state.filtersData = payload;\r\n },\r\n getChartData(state) {\r\n state.chartLoader = true;\r\n },\r\n stopChartLoader(state) {\r\n state.chartLoader = false;\r\n },\r\n setChartData(state, { payload }) {\r\n state.chartLoader = false;\r\n state.chartData = payload.chartData ? payload.chartData : payload.chartDataCrossTab;\r\n },\r\n setYears(state, { payload }) {\r\n state.loading = false;\r\n state.years = payload;\r\n },\r\n searchLoading(state, { payload }) {\r\n state.searchLoading = payload;\r\n },\r\n setSearchData(state, { payload }) {\r\n state.searchLoading = false;\r\n state.searchData = payload;\r\n },\r\n setExcelData(state, { payload }) {\r\n state.loading = false;\r\n state.excelData = payload;\r\n },\r\n resetallData(state) {\r\n state.questionnaireNames = [];\r\n state.filtersData = [];\r\n state.surveyQues = [];\r\n state.surveyQuesCrosstab = [];\r\n state.questionsData = [];\r\n state.chartData = [];\r\n state.years = [];\r\n state.searchData = [];\r\n state.excelData = [];\r\n }\r\n }\r\n});\r\n\r\nexport const reportAction = reportSlice.actions;\r\n\r\nexport default reportSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nconst INITIAL_STATE = {\r\n loading: false,\r\n alertMsg: ''\r\n};\r\n\r\nconst managequesSlice = createSlice({\r\n name: 'manageques',\r\n initialState: INITIAL_STATE,\r\n reducers: {\r\n startLoading(state) {\r\n state.loading = true;\r\n state.getList = false;\r\n },\r\n stopLoading(state) {\r\n state.loading = false;\r\n }\r\n }\r\n});\r\n\r\nexport const managequesAction = managequesSlice.actions;\r\n\r\nexport default managequesSlice.reducer;\r\n","// import authSlice from 'containers/Authorization/auth.slice';\r\nimport authSlice from 'containers/Login/auth.slice';\r\nimport categorySlice from 'containers/QuestionCategory/category.slice';\r\nimport questionSlice from 'containers/Questions/question.slice';\r\nimport acountsSlice from 'containers/AccountSettings/accounts.slice';\r\nimport reportSlice from 'containers/Reports/report.slice';\r\nimport managequesSlice from 'containers/ManageQuestions/manageques.slice';\r\n\r\nconst rootReducer = {\r\n auth: authSlice,\r\n category: categorySlice,\r\n question: questionSlice,\r\n accounts: acountsSlice,\r\n reports: reportSlice,\r\n manageques: managequesSlice\r\n};\r\n\r\nexport default rootReducer;\r\n","import { configureStore } from '@reduxjs/toolkit';\r\nimport rootReducer from 'reducers';\r\n\r\nconst store = configureStore({\r\n reducer: rootReducer\r\n});\r\n\r\nexport default store;\r\n","import axios from 'axios';\r\nimport AUTH_CONFIG from './authConfig';\r\nimport store from 'store/store';\r\nimport { authAction } from 'containers/Login/auth.slice';\r\nimport { STATUS_CODE } from 'common/constants';\r\nimport AuthStore from 'common/authStore';\r\n\r\n// axios.defaults.baseURL = AUTH_CONFIG.serverBasePath;\r\n\r\n/**\r\n * Axios request interceptors add jwt token in headers\r\n */\r\naxios.interceptors.request.use(\r\n function (config) {\r\n const _accessToken = AuthStore.accessToken;\r\n config.headers.Authorization = `Bearer ${_accessToken}`;\r\n\r\n return config;\r\n },\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n/**\r\n * Axios request interceptors add jwt token in headers\r\n */\r\naxios.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (error) {\r\n if (error.response?.status === STATUS_CODE.TokenExpired) {\r\n store.dispatch({ type: authAction.setTokenExpired().type });\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n/**\r\n * Function performs axios get request\r\n * @param {String} url - http request url\r\n * @returns\r\n */\r\nexport function webApiGet(url) {\r\n return axios.get(`${AUTH_CONFIG.serverBasePath}${url}`);\r\n}\r\n\r\n/**\r\n * Function performs axios put request\r\n * @param {String} url - request url\r\n * @param {Object} options - request parameters\r\n * @returns\r\n */\r\nexport function webApiPut(url, options) {\r\n return axios.put(`${AUTH_CONFIG.serverBasePath}${url}`, options);\r\n}\r\n\r\n/**\r\n * Function performs axios post request\r\n * @param {String} url - request url\r\n * @param {Object} options - request parameters\r\n * @returns\r\n */\r\nexport function webApiPost(url, options) {\r\n return axios.post(`${AUTH_CONFIG.serverBasePath}${url}`, options);\r\n}\r\n\r\n/**\r\n * Function performs axios delete request\r\n * @param {String} url - request url\r\n * @param {Object} options - request parameters\r\n * @returns\r\n */\r\nexport function webApiDelete(url, options) {\r\n return axios.delete(`${AUTH_CONFIG.serverBasePath}${url}`, options);\r\n}\r\n","import { webApiGet, webApiPost, webApiPut } from './request';\r\n\r\n// export const loginApi = (request) => webApiPost('/login', { ...request })\r\n\r\n// qlib\r\nexport const getcategoriesApi = () => webApiGet(`/category/getcategories`);\r\nexport const getQuestionsApi = (payload) => webApiPost('/question/getquestions', [...payload]);\r\nexport const loginApi = (request) => webApiPost('/user/login', { ...request });\r\nexport const getUserInfoApi = () => webApiGet(`/user/roles`);\r\nexport const getYearsApi = () => webApiGet(`/questionnaire/getQuestionnaireYears`);\r\n// export const questionnaireNamesApi = (payload) =>\r\n// webApiGet(`/questionnaire/getQuestionnaireNames${payload && '?year=' + payload?.year, '?client=' + payload?.client}`);\r\nexport const questionnaireNamesApi = (payload) => {\r\n let query = '';\r\n\r\n if (payload?.year || payload?.client) {\r\n query = `?${payload.year ? `year=${payload.year}` : ''}${\r\n payload.year && payload.client ? '&' : ''\r\n }${payload.client ? `client=${payload.client}` : ''}`;\r\n }\r\n\r\n return webApiGet(`/questionnaire/getQuestionnaireNames${query}`);\r\n};\r\nexport const getQuestionsByIdApi = (payload) =>\r\n webApiPost(`/question/getQuestionsByQuestionnaireId?id=${payload}`);\r\nexport const updateProfileApi = (payload) => webApiPut(`/user/updateprofile`, { ...payload });\r\nexport const updatePasswordApi = (payload) => webApiPut(`/user/updatepassword`, { ...payload });\r\n\r\nexport const getSurveyQues = (id) => webApiGet(`/questionnaire/getSurveyQuestions?id=${id}`);\r\nexport const getSurveyFilter = (id) => webApiGet(`/questionnaire/getSurveyFilters?id=${id}`);\r\nexport const getSurveyChartData = (request) =>\r\n webApiPost(`/questionnaire/${request.cqId != '' ? 'CrossTab' : 'getSurveyChartData'}`, {\r\n ...request\r\n });\r\nexport const getUserProfile = (id) => webApiGet(`/user/getprofile?username=${id}`);\r\nexport const updatequestionnaireNamesApi = (payload) =>\r\n webApiPost(`/questionnaire/UpdateQuestionnaire`, { ...payload });\r\nexport const importDataApi = ({ file, title, year, id }) =>\r\n webApiPost(\r\n `/import/ImportData?${id && 'Id=' + id}${title && '&Title=' + title + '&'}${\r\n year && 'Year=' + year\r\n }`,\r\n file\r\n );\r\nexport const searchQuestionnaire = (id) => webApiGet(`/questionnaire/Search?searchString=${id}`);\r\n\r\nexport const getExcelDownloadData = (request) =>\r\n webApiPost('/questionnaire/Download/Excel', { ...request });\r\n\r\nexport const getCrossTabQuestions = (id) =>\r\n webApiGet(`/questionnaire/getCrossTabQuestions?id=${id}`);\r\n\r\nexport const clientNamesApi = (payload) =>\r\n webApiGet(`/questionnaire/getClients${payload ? '?year=' + payload : ''}`);\r\n\r\n// Title=${title}&\r\n","import { categoryAction } from './category.slice';\r\nimport {\r\n getcategoriesApi,\r\n getQuestionsByIdApi,\r\n getYearsApi,\r\n questionnaireNamesApi,\r\n clientNamesApi\r\n} from 'utils/apis';\r\nimport { STATUS_CODE } from 'common/constants';\r\n\r\nexport const fetchCategories = () => async (dispatch) => {\r\n try {\r\n dispatch(categoryAction.getCategoryList());\r\n const response = await getcategoriesApi();\r\n // console.log('response.status', response.status);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(categoryAction.setCategories(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(categoryAction.stopLoading());\r\n }\r\n};\r\nexport const fetchYears = () => async (dispatch) => {\r\n try {\r\n dispatch(categoryAction.getCategoryList());\r\n const response = await getYearsApi();\r\n // console.log('response.status', response.status);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(categoryAction.setYears(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(categoryAction.stopLoading());\r\n }\r\n};\r\nexport const fetchquestionnaireNames = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(categoryAction.getQuestionList());\r\n const response = await questionnaireNamesApi(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(categoryAction.setQuestionnaireNames(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(categoryAction.stopQuesLoading());\r\n }\r\n};\r\nexport const fetchclientNames = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(categoryAction.getClientList());\r\n const response = await clientNamesApi(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(categoryAction.setClientNames(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(categoryAction.stopClientLoading());\r\n }\r\n};\r\nexport const fetchgetQuestionsById = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(categoryAction.getQuestionList());\r\n const response = await getQuestionsByIdApi(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(categoryAction.setQuestionData(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(categoryAction.stopQuesLoading());\r\n }\r\n};\r\n\r\nexport const handleCategoriesSelection = (selectedval) => async (dispatch) => {\r\n dispatch(categoryAction.setSelectedCategories(selectedval));\r\n};\r\n\r\nexport const emptyQuestionbyId = () => async (dispatch) => {\r\n dispatch(categoryAction.emptyQuestionData());\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport LayoutComp from 'components/LayoutComp/Index';\r\nimport { useDispatch } from 'react-redux';\r\nimport { STATIC_TEXT } from 'utils/constants';\r\nimport './styles.scss';\r\nimport { Button, Col, Row } from 'antd';\r\nimport { SurveyInsight, SurveyVault } from 'assets';\r\nimport Navigation from 'components/Navigation';\r\n\r\nimport { fetchCategories } from 'containers/QuestionCategory/category.action';\r\n// import Loader from 'components/ui/Loader';\r\n\r\nconst Dashbord = (props) => {\r\n const { history } = props;\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(fetchCategories());\r\n\r\n // eslint-disable-next-line\r\n }, [dispatch]);\r\n const [currentSelect, setCurrentSelect] = useState(1);\r\n const handleNext = () => {\r\n if (currentSelect == 1) {\r\n history.push('/question_category');\r\n } else {\r\n history.push('/insight');\r\n }\r\n };\r\n return (\r\n
\r\n \r\n
\r\n
{STATIC_TEXT['SELECT_OPTION']}
\r\n

{STATIC_TEXT['SELECT_OPTION_TO_DOWNLOAD_YOUR_SURVEY']}

\r\n \r\n \r\n setCurrentSelect(1)}\r\n >\r\n
\r\n \"images\"\r\n
\r\n
\r\n
\r\n

\r\n {STATIC_TEXT.SELECT_OPTION_TO_CONTINUE_WITH_THE_SURVEY}\r\n

\r\n setCurrentSelect(1)}\r\n >\r\n {STATIC_TEXT.HFS_SURVEY_VAULT}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n setCurrentSelect(2)}\r\n >\r\n
\r\n \"images\"\r\n
\r\n\r\n
\r\n
\r\n

\r\n {STATIC_TEXT.SELECT_OPTION_TO_CONTINUE_WITH_THE_SURVEY}\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Dashbord;\r\n","import React from 'react';\r\n\r\nconst Header = () => {\r\n return
Main Header
;\r\n};\r\n\r\nexport default Header;\r\n","import Header from 'components/Header';\r\nimport './index.scss';\r\nfunction ErrorPage(props) {\r\n const { errorDetails = {}, isAuthorized = false } = props;\r\n // function extractContent(html) {\r\n // return new DOMParser().parseFromString(html, 'text/html').documentElement.textContent;\r\n // }\r\n return (\r\n
\r\n
\r\n
\r\n

{errorDetails.response?.status}

\r\n {errorDetails.response?.status == 500 ? (\r\n
\r\n ) : (\r\n

{errorDetails.response?.data.message}

\r\n )}\r\n
\r\n
\r\n );\r\n}\r\nexport default ErrorPage;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Button, Modal, Radio, Tabs } from 'antd';\r\nimport { CloudDownloadOutlined } from '@ant-design/icons';\r\n\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n fetchYears,\r\n fetchquestionnaireNames,\r\n fetchgetQuestionsById,\r\n emptyQuestionbyId\r\n} from '../category.action';\r\n\r\nimport './styles.scss';\r\nimport Loader from 'components/ui/Loader';\r\nimport { excelDownloader, flattenData, wordDownload } from 'utils/functions';\r\n\r\nexport default function DownloadModal({ isModalOpen, handleOk, handleCancel }) {\r\n const dispatch = useDispatch();\r\n const [activeKey, setActiveKey] = useState(null);\r\n const [currentQuestion, setCurrentQuestion] = useState(null);\r\n const [curentqTitle, setCurentqTitle] = useState('');\r\n const [loader, setLoader] = useState(false);\r\n const categoriesState = useSelector((state) => state.category);\r\n\r\n const {\r\n questionLoader = false,\r\n questionnaireNames = [],\r\n years = [],\r\n questionData = [],\r\n isFetch = false\r\n } = categoriesState;\r\n\r\n useEffect(() => {\r\n dispatch(fetchYears());\r\n // eslint-disable-next-line\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if (years.length > 0) {\r\n const firstyear = years[0];\r\n setActiveKey(firstyear);\r\n dispatch(fetchquestionnaireNames(firstyear));\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [years]);\r\n\r\n const handleYearClick = (year) => {\r\n setActiveKey(year);\r\n setCurrentQuestion(null);\r\n dispatch(fetchquestionnaireNames(year));\r\n dispatch(emptyQuestionbyId());\r\n };\r\n const handleQnameChange = (e) => {\r\n setCurrentQuestion(e.target.value);\r\n const qtitle = questionnaireNames.filter((item) => item.id == e.target.value)[0];\r\n setCurentqTitle(qtitle?.name);\r\n dispatch(emptyQuestionbyId());\r\n };\r\n const handleGetQuestion = () => {\r\n dispatch(fetchgetQuestionsById(currentQuestion));\r\n };\r\n\r\n const handleDownload = () => {\r\n const data = flattenData(questionData);\r\n const filename = curentqTitle.replace(' ', '_');\r\n excelDownloader(data, filename, setLoader);\r\n };\r\n\r\n // word download\r\n\r\n const handleDownloadWord = async () => {\r\n const filename = curentqTitle.replace(' ', '_');\r\n wordDownload(questionData, filename, setLoader);\r\n };\r\n\r\n return (\r\n
\r\n {loader && }\r\n \r\n Questionnaire{' '}\r\n
Please choose a year to download questionnaire
\r\n \r\n }\r\n open={isModalOpen}\r\n onOk={handleOk}\r\n onCancel={handleCancel}\r\n centered\r\n width={750}\r\n footer={\r\n
\r\n
\r\n Select option to download your survey.\r\n {isFetch && questionData.length < 1 && (\r\n <>\r\n
No Data avaliable!
\r\n \r\n )}\r\n
\r\n {isFetch && questionData.length > 0 ? (\r\n <>\r\n \r\n \r\n \r\n ) : (\r\n \r\n Get Question\r\n \r\n )}\r\n
\r\n
\r\n
\r\n }\r\n >\r\n
\r\n {questionLoader && }\r\n Year }}\r\n onChange={handleYearClick}\r\n items={years.map((item) => ({\r\n label: `${item}`,\r\n key: item,\r\n children: (\r\n
\r\n \r\n {questionnaireNames?.map((item) => (\r\n
\r\n \r\n {item.name}\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n )\r\n }))}\r\n />\r\n
Questionnaire List
\r\n {/* Show a message when no tab is selected */}\r\n {!activeKey &&
Please select a year to load data.
}\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import { questionAction } from './question.slice';\r\nimport { getQuestionsApi } from 'utils/apis';\r\nimport { STATUS_CODE } from 'common/constants';\r\nimport { setSelectedQuestion, setUpdatedQuestion } from 'utils/functions';\r\n\r\nexport const fetchQuestions = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(questionAction.getQuestionList());\r\n const response = await getQuestionsApi(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n const updatedQuestion = setUpdatedQuestion(response.data.data);\r\n const selectedIds = setSelectedQuestion(updatedQuestion);\r\n await dispatch(questionAction.setSelectedQuestions(selectedIds));\r\n await dispatch(questionAction.setQuestions(updatedQuestion));\r\n }\r\n } catch (err) {\r\n dispatch(questionAction.stopLoading());\r\n }\r\n};\r\n\r\nexport const handleQuestionsSelection = (selectedval) => async (dispatch) => {\r\n dispatch(questionAction.setSelectedQuestions(selectedval));\r\n};\r\nexport const handleReportName = (reportname) => async (dispatch) => {\r\n dispatch(questionAction.setReportName(reportname));\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport './styles.scss';\r\nimport LayoutComp from 'components/LayoutComp/Index';\r\nimport { Row, Checkbox, Tabs, Col, Button, Typography, Input } from 'antd';\r\nimport Navigation from 'components/Navigation';\r\nimport { STATIC_TEXT } from 'utils/constants';\r\nimport { BackArrow } from 'utils/svg';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { fetchCategories, handleCategoriesSelection, emptyQuestionbyId } from './category.action';\r\nimport Loader from 'components/ui/Loader';\r\nimport DownloadModal from './Components/DownloadModal';\r\nimport { handleQuestionsSelection, handleReportName } from 'containers/Questions/question.action';\r\n\r\nconst QuestionCategory = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const categoriesState = useSelector((state) => state.category);\r\n const { loader = false, catgoriesList = [], selectedCategories = [] } = categoriesState;\r\n const questionsState = useSelector((state) => state.question);\r\n const { reportName = '' } = questionsState;\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const [localReportName, setLocalReportName] = useState('');\r\n const [hasError, setHasError] = useState(false);\r\n // console.log(isModalOpen);\r\n\r\n // const [categories, setCategories] = useState(null);\r\n\r\n useEffect(() => {\r\n setLocalReportName(reportName);\r\n }, [reportName]);\r\n\r\n useEffect(() => {\r\n dispatch(handleQuestionsSelection([]));\r\n dispatch(fetchCategories());\r\n dispatch(emptyQuestionbyId());\r\n\r\n // eslint-disable-next-line\r\n }, [dispatch]);\r\n\r\n const showModal = () => {\r\n setIsModalOpen(true);\r\n };\r\n\r\n // const handleOk = () => {\r\n // setIsModalOpen(false);\r\n // };\r\n\r\n const handleCancel = () => {\r\n dispatch(emptyQuestionbyId());\r\n setIsModalOpen(false);\r\n };\r\n\r\n const handleReset = () => {\r\n dispatch(handleCategoriesSelection([]));\r\n };\r\n // const handleNext = () => {\r\n // history.push('/questions');\r\n // };\r\n const handleNext = () => {\r\n if (localReportName == '') {\r\n setHasError(true);\r\n // window.scrollTo(0, 0);\r\n return;\r\n }\r\n dispatch(handleReportName(localReportName));\r\n history.push('/questions');\r\n };\r\n\r\n const handleBack = () => {\r\n history.push('/');\r\n };\r\n\r\n const handleChange = (val) => {\r\n dispatch(handleCategoriesSelection(val));\r\n };\r\n // const handleTabChange = (val) => {\r\n // console.log(val);\r\n // dispatch(fetchquestionnaireNames(val));\r\n // };\r\n\r\n const reportNameChange = (e) => {\r\n if (e.target.value !== '') {\r\n setHasError(false);\r\n } else {\r\n setHasError(true);\r\n }\r\n setLocalReportName(e.target.value);\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {STATIC_TEXT['SELECT_OPTION']}\r\n
\r\n\r\n
\r\n \r\n
\r\n

{STATIC_TEXT['SELECT_OPTION_TO_DOWNLOAD_YOUR_SURVEY']}

\r\n\r\n \r\n \r\n {loader ? (\r\n \r\n ) : (\r\n \r\n {\r\n return (\r\n item.title !== 'No Category' && {\r\n key: index,\r\n label: item.title,\r\n children: item.subcategories.map((childitem, cindex) => (\r\n
\r\n {childitem.title}\r\n
\r\n ))\r\n }\r\n );\r\n })}\r\n />\r\n \r\n )}\r\n
\r\n \r\n\r\n \r\n\r\n {!loader && (\r\n \r\n \r\n
\r\n \r\n Please Enter Questionnaire Name*\r\n \r\n \r\n {hasError &&
This field is required!
}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default QuestionCategory;\r\n","import React, { useEffect, useState } from 'react';\r\nimport LayoutComp from 'components/LayoutComp/Index';\r\nimport Navigation from 'components/Navigation';\r\nimport { QUESTION_TYPE, STATIC_TEXT } from 'utils/constants';\r\nimport { BackArrow } from 'utils/svg';\r\nimport styles from './styles.module.scss';\r\nimport { Checkbox, Col, Row, Tabs } from 'antd';\r\nimport { fetchQuestions, handleReportName, handleQuestionsSelection } from './question.action';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Loader from 'components/ui/Loader';\r\n\r\nconst { TabPane } = Tabs;\r\n\r\nconst Questions = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const categoriesState = useSelector((state) => state.category);\r\n const { selectedCategories = [] } = categoriesState;\r\n const questionsState = useSelector((state) => state.question);\r\n\r\n const [localReportName, setLocalReportName] = useState('');\r\n\r\n const { loader = false, questionsList = [], reportName = '', selectedQuestions } = questionsState;\r\n\r\n useEffect(() => {\r\n if (selectedCategories.length < 1) {\r\n history.push('/question_category');\r\n }\r\n }, [selectedCategories, history]);\r\n\r\n useEffect(() => {\r\n if (selectedQuestions.length < 1) {\r\n dispatch(fetchQuestions(selectedCategories));\r\n }\r\n // eslint-disable-next-line\r\n }, [dispatch, selectedCategories]);\r\n\r\n useEffect(() => {\r\n setLocalReportName(reportName);\r\n }, [reportName]);\r\n\r\n const handleNext = () => {\r\n dispatch(handleReportName(localReportName));\r\n history.push('/download');\r\n };\r\n\r\n const handleBack = () => {\r\n history.push('/question_category');\r\n };\r\n\r\n const handleChange = (val, index) => {\r\n let copylist = [...selectedQuestions];\r\n copylist[index] = val;\r\n\r\n dispatch(handleQuestionsSelection(copylist));\r\n };\r\n\r\n return (\r\n
\r\n {loader && }\r\n \r\n
\r\n
\r\n \r\n
\r\n {reportName}\r\n
\r\n\r\n

{STATIC_TEXT['SELECT_OPTION_TO_DOWNLOAD_YOUR_SURVEY']}

\r\n\r\n \r\n {questionsList.map((questionCat, index) => (\r\n \r\n handleChange(list, index)}\r\n style={{ width: '100%', display: 'block' }}\r\n className={styles.qcheckboxgroup}\r\n >\r\n
\r\n \r\n {questionCat.subcategories.map((subcat) => (\r\n \r\n {subcat.questions.map((questionItem) => {\r\n // Create a unique identifier for each question\r\n // const uniqueQuestionId = `${questionCat.id}_${subcat.id}_${questionItem.id}`;\r\n return (\r\n \r\n \r\n
\r\n \r\n {questionItem.text}\r\n \r\n
\r\n {QUESTION_TYPE[questionItem.type - 1]}\r\n
\r\n 4 && styles.litwocol}\r\n >\r\n {questionItem.options.map((option) => (\r\n
  • \r\n \r\n {option.text}\r\n
  • \r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n })}\r\n \r\n ))}\r\n \r\n
    \r\n \r\n \r\n ))}\r\n \r\n\r\n
    \r\n Deselect to hide your questions\r\n
    \r\n\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Questions;\r\n","import { Button, Col, Row } from 'antd';\r\nimport { ExcelIcon, WordIcon } from 'assets';\r\nimport LayoutComp from 'components/LayoutComp/Index';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { STATIC_TEXT } from 'utils/constants';\r\nimport { BackArrow } from 'utils/svg';\r\nimport Navigation from 'components/Navigation';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport styles from './styles.module.scss';\r\nimport Loader from 'components/ui/Loader';\r\nimport { excelDownloader, filterQuestionsById, flattenData, wordDownload } from 'utils/functions';\r\n\r\nconst Download = ({ history }) => {\r\n const [loader, setLoader] = useState(false);\r\n const questionsState = useSelector((state) => state.question);\r\n const { questionsList = [], selectedQuestions = [], reportName = '' } = questionsState;\r\n const categoriesState = useSelector((state) => state.category);\r\n const { selectedCategories = [] } = categoriesState;\r\n\r\n // console.log('reportName', reportName);\r\n useEffect(() => {\r\n if (selectedCategories.length < 1) {\r\n history.push('/question_category');\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n const handleBack = () => {\r\n history.push('/questions');\r\n };\r\n const handleHomebtn = () => {\r\n history.push('/');\r\n };\r\n\r\n // console.log('flattenData', flattenData(filterQuestionsById(questionsList, selectedQuestions)));\r\n const handleDownload = () => {\r\n const finaldata = flattenData(filterQuestionsById(questionsList, selectedQuestions));\r\n console.log('finaldata', finaldata);\r\n if (finaldata.length < 1) {\r\n return;\r\n }\r\n\r\n excelDownloader(finaldata, reportName, setLoader);\r\n };\r\n\r\n const handleDownloadWord = () => {\r\n const finaldata = filterQuestionsById(questionsList, selectedQuestions);\r\n wordDownload(finaldata, reportName, setLoader);\r\n };\r\n return (\r\n
    \r\n {loader && }\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {STATIC_TEXT['DOWNLOAD_SURVEY']}\r\n
    \r\n

    {STATIC_TEXT['SELECT_OPTION_TO_DOWNLOAD_YOUR_SURVEY']}

    \r\n \r\n \r\n
    \r\n
    \r\n \"images\"\r\n
    \r\n
    \r\n
    \r\n

    \r\n {STATIC_TEXT.YOUR_FILE_OF_SURVEY_WILL_BE_DOWNLOAD_IN_THE_EXCEL_FORMAT}\r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \"images\"\r\n
    \r\n\r\n
    \r\n
    \r\n

    \r\n {STATIC_TEXT.YOUR_FILE_OF_SURVEY_WILL_BE_DOWNLOAD_IN_THE_WORD_FORMAT}\r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Download;\r\n","import AuthStore from 'common/authStore';\r\n// import { NAVIGATION } from 'common/constants';\r\nimport AUTH_CONFIG from 'utils/authConfig';\r\nimport { Modal } from 'antd';\r\nimport './index.scss';\r\n\r\nfunction WarningModal() {\r\n const handleClickOnLogout = () => {\r\n // localStorage.clear();\r\n AuthStore.emptyStore();\r\n localStorage.removeItem('usertype');\r\n\r\n window.location.href = `${window.location.origin.toString()}${AUTH_CONFIG.appBasePath}`;\r\n };\r\n\r\n return (\r\n \r\n

    \r\n Your session has expired.{' '}\r\n \r\n Click here to login\r\n \r\n

    \r\n \r\n );\r\n}\r\nexport default WarningModal;\r\n","import { accountsAction } from './accounts.slice';\r\nimport { updateProfileApi, updatePasswordApi } from 'utils/apis';\r\nimport { STATUS_CODE } from 'common/constants';\r\nimport { message } from 'antd';\r\n\r\nexport const updateProfile = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(accountsAction.startLoading());\r\n const response = await updateProfileApi(payload);\r\n // console.log('response.status', response.status);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(accountsAction.stopLoading());\r\n const data = response.data.data;\r\n message.success(data, 3);\r\n // dispatch(categoryAction.setCategories(response.data.data));\r\n } else {\r\n dispatch(accountsAction.stopLoading());\r\n const data = response.data.data;\r\n message.error(data || 'Request was updated successful!', 3);\r\n }\r\n } catch (error) {\r\n message.error(`Error: ${error.response.data.message || 'Something went wrong'}`, 3);\r\n dispatch(accountsAction.StopLoading());\r\n }\r\n};\r\nexport const updatePassword = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(accountsAction.startLoading());\r\n\r\n // Use the API function to make the request\r\n const response = await updatePasswordApi(payload);\r\n\r\n if (response.status === STATUS_CODE.Ok) {\r\n const data = response.data.data;\r\n dispatch(accountsAction.stopLoading());\r\n if (response.data.error) {\r\n dispatch(accountsAction.setErrorMsg(data));\r\n } else {\r\n message.success(data, 3);\r\n }\r\n\r\n // dispatch other actions as needed, for example:\r\n // dispatch(categoryAction.setCategories(response.data.data));\r\n } else {\r\n dispatch(accountsAction.stopLoading());\r\n const data = response.data.data;\r\n message.error(data || 'Something went wrong', 3);\r\n }\r\n } catch (error) {\r\n dispatch(accountsAction.stopLoading());\r\n const errorMessage = error.response?.data?.message || 'Something went wrong';\r\n message.error(`Error: ${errorMessage}`, 3);\r\n }\r\n};\r\n\r\nexport const emptyState = () => async (dispatch) => {\r\n dispatch(accountsAction.emptyState());\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport LayoutComp from 'components/LayoutComp/Index';\r\nimport { BackArrow } from 'utils/svg';\r\nimport { STATIC_TEXT } from 'utils/constants';\r\nimport { Alert, Button, Card, Col, Form, Input, Row } from 'antd';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { updatePassword, updateProfile } from './account.action';\r\nimport Loader from 'components/ui/Loader';\r\n\r\nconst formItemLayout = {\r\n labelCol: {\r\n xs: {\r\n span: 24\r\n },\r\n sm: {\r\n span: 6\r\n }\r\n },\r\n wrapperCol: {\r\n xs: {\r\n span: 24\r\n },\r\n sm: {\r\n span: 14\r\n }\r\n }\r\n};\r\n\r\nconst AccountSettings = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const userData = useSelector((state) => state.auth.userData);\r\n const userProfile = useSelector((state) => state.auth.userProfile);\r\n const accounts = useSelector((state) => state.accounts);\r\n const { loading = false, errorMsg = '' } = accounts;\r\n console.log('userData', userData);\r\n console.log('userProfile', userProfile);\r\n const { userFirstName = '', userLastName = '', emailId = '' } = userData;\r\n const [form] = Form.useForm();\r\n const [passwordForm] = Form.useForm();\r\n const [isUserFormValid, setIsUserFormValid] = useState(true);\r\n const [isPasswordUpdateButtonDisabled, setIsPasswordUpdateButtonDisabled] = useState(true);\r\n\r\n useEffect(() => {\r\n form.setFieldsValue({\r\n firstName: userFirstName,\r\n lastName: userLastName,\r\n email: emailId\r\n });\r\n\r\n return () => form.resetFields();\r\n }, [userFirstName, userLastName, emailId, form]);\r\n\r\n const handleBack = () => {\r\n history.push('/');\r\n };\r\n\r\n const onFinish = (values) => {\r\n dispatch(updateProfile(values));\r\n };\r\n\r\n const handleUpdatePass = (values) => {\r\n const { currentPassword, newPassword } = values;\r\n const payload = {\r\n currentPassword,\r\n newPassword,\r\n email: emailId || ''\r\n };\r\n dispatch(updatePassword(payload));\r\n };\r\n\r\n const handleUserFormChange = () => {\r\n const hasErrors = form.getFieldsError().some(({ errors }) => errors.length > 0);\r\n setIsUserFormValid(!hasErrors);\r\n };\r\n\r\n const handlePasswordFormChange = () => {\r\n const hasErrors = passwordForm.getFieldsError().some(({ errors }) => errors.length > 0);\r\n const hasEmptyRequiredFields = Object.values(passwordForm.getFieldsValue()).some(\r\n (value) => !value\r\n );\r\n\r\n setIsPasswordUpdateButtonDisabled(hasErrors || hasEmptyRequiredFields);\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {STATIC_TEXT['MANAGE_ACCOUNT']}\r\n
    \r\n

    {STATIC_TEXT['PROFILE_SUBHEADING']}

    \r\n
    \r\n
    \r\n {loading && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorMsg && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({\r\n validator(_, value) {\r\n if (!value || getFieldValue('newPassword') === value) {\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(new Error('The two passwords do not match!'));\r\n }\r\n })\r\n ]}\r\n >\r\n \r\n \r\n \r\n \r\n Update\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AccountSettings;\r\n","import PptxGenJS from 'pptxgenjs';\r\nimport { CuriousLogo } from 'assets';\r\n\r\nexport const removeDuplicates = (arr) => {\r\n return [...new Set(arr)];\r\n};\r\nexport const mergeStackedData = (data) => {\r\n const mergedData = {};\r\n\r\n data.forEach((item) => {\r\n if (!mergedData[item.name]) {\r\n mergedData[item.name] = { name: item.name, data: [], count: [] };\r\n }\r\n mergedData[item.name].data.push(...item.data);\r\n mergedData[item.name].count.push(...item.count);\r\n });\r\n\r\n return Object.values(mergedData);\r\n};\r\nexport const downloadPPTmulti = async (surveyData, fileName, isCrossTab, isMulti) => {\r\n const baseColors = [\r\n '7438f2',\r\n '009150',\r\n 'FF7F0E',\r\n '1F77B4',\r\n 'D62728',\r\n '9467BD',\r\n '8C564B',\r\n 'E377C2',\r\n '7F7F7F',\r\n 'BCBD22',\r\n '17BECF',\r\n 'F5A623',\r\n '4E79A7',\r\n '6fcf61',\r\n 'E15759',\r\n '76B7B2',\r\n '136213'\r\n ];\r\n\r\n let pptx = new PptxGenJS();\r\n\r\n const processSlide = async (survey) => {\r\n let chartOptions = {\r\n x: 1,\r\n y: 1,\r\n w: 8,\r\n h: 4,\r\n chartColors: survey.qText.length > 1 ? baseColors : ['7438f2'],\r\n dataLabelFormatCode: '0%',\r\n dataLabelColor: '000000',\r\n dataLabelFontFace: 'Arial',\r\n dataLabelFontSize: 5,\r\n showValue: true,\r\n catAxisLabelFontSize: 6,\r\n showAxisLabels: false,\r\n valAxisHidden: true,\r\n showPercent: true\r\n };\r\n\r\n let slide = pptx.addSlide();\r\n slide.addImage({\r\n path: CuriousLogo,\r\n x: 8.2,\r\n y: 0.1,\r\n h: 0.5354331,\r\n w: 1.582677\r\n });\r\n slide.addText(`[${survey.surveyQId}] ${survey.title}`, {\r\n x: 0.5,\r\n y: 0.2,\r\n h: 0.6,\r\n align: 'top',\r\n fontSize: 14,\r\n bold: true\r\n });\r\n slide.addText(`Base: ${survey.base}`, { x: 0.5, y: 5.35, fontSize: 6, bold: true });\r\n\r\n let chartData = [];\r\n\r\n if (survey.qText.length > 1) {\r\n chartOptions = { ...chartOptions, showLegend: true, legendFontSize: 6, legendPos: 't' };\r\n if (isCrossTab) {\r\n chartOptions = { ...chartOptions, barGrouping: 'stacked' };\r\n }\r\n // multi\r\n if (isMulti) {\r\n let stackArr = [];\r\n\r\n survey.options.forEach((option) => {\r\n if (option.stack != '') {\r\n stackArr.push(option.stack);\r\n }\r\n });\r\n const uniqStack = removeDuplicates(stackArr);\r\n let categories = [];\r\n survey.qText.map((item) => {\r\n uniqStack.map((stack) => {\r\n categories.push(`${item} (${stack})`);\r\n });\r\n });\r\n\r\n const seriesData = mergeStackedData(survey.options);\r\n\r\n chartData = seriesData.map((option) => ({\r\n name: option.name,\r\n labels: categories,\r\n values: option.data.map((d) => d / 100)\r\n }));\r\n } else {\r\n chartData = survey.options.map((option) => ({\r\n name: option.name,\r\n labels: survey.qText,\r\n values: option.data.map((d) => d / 100)\r\n }));\r\n }\r\n // end multi\r\n\r\n // chartData = survey.options.map((option) => ({\r\n // name: option.name,\r\n // labels: survey.qText,\r\n // values: option.data.map((d) => d / 100)\r\n // }));\r\n } else {\r\n const data = survey.options.map((option) => ({\r\n name: option.name,\r\n value: option.data[0]\r\n }));\r\n\r\n chartData = [\r\n {\r\n name: 'Responses',\r\n labels: data.map((d) => d.name),\r\n values: data.map((d) => d.value / 100)\r\n }\r\n ];\r\n }\r\n\r\n if (survey.options.length > 0) {\r\n slide.addChart(isCrossTab ? pptx.ChartType.bar : pptx.ChartType.bar, chartData, chartOptions);\r\n } else {\r\n slide.addText(`No records to display the chart`, {\r\n x: 1,\r\n y: 1.2,\r\n w: 8,\r\n h: 2,\r\n fontSize: 10,\r\n bold: true,\r\n align: 'center'\r\n });\r\n }\r\n\r\n await new Promise((resolve) => setTimeout(resolve, 10));\r\n };\r\n\r\n await Promise.all(surveyData.map(processSlide));\r\n\r\n await pptx.writeFile({ fileName: `${fileName}.pptx`, compression: true, verbose: true });\r\n};\r\n","export default \"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMqaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAxNCA3OS4xNTE0ODEsIDIwMTMvMDMvMTMtMTI6MDk6MTUgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBGN0Y2REY2MDRDQzExRjBCRjFGRDAxNUJEMjFEMzQzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBGN0Y2REY1MDRDQzExRjBCRjFGRDAxNUJEMjFEMzQzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MjY1RTNCQzA0QjYxMUYwQTc5NkY5RjgyQzEzQjc5RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5MjY1RTNCRDA0QjYxMUYwQTc5NkY5RjgyQzEzQjc5RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYI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\"","import { reportAction } from './report.slice';\r\nimport { notification } from 'antd';\r\n// import Highcharts from 'highcharts';\r\nimport {\r\n getCrossTabQuestions,\r\n getExcelDownloadData,\r\n getSurveyChartData,\r\n getSurveyFilter,\r\n getSurveyQues,\r\n getYearsApi,\r\n questionnaireNamesApi,\r\n clientNamesApi,\r\n searchQuestionnaire\r\n} from 'utils/apis';\r\nimport { STATUS_CODE } from 'common/constants';\r\nimport { downloadExcel, processChartData, removeWhiteSpace } from 'utils/functions';\r\nimport { downloadPPTmulti } from './downloadPPT';\r\n\r\nexport const fetchYears = () => async (dispatch) => {\r\n try {\r\n dispatch(reportAction.getQuestionaireList());\r\n const response = await getYearsApi();\r\n // console.log('response.status', response.status);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(reportAction.setYears(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\n\r\nexport const fetchquestionnaireNamesReports = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(reportAction.getQuestionaireList());\r\n const response = await questionnaireNamesApi(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(reportAction.setQuestionnaireNames(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\nexport const fetchclientNamesReports = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(reportAction.getClientList());\r\n const response = await clientNamesApi(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(reportAction.setClientNames(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\nexport const resetdata = () => async (dispatch) => {\r\n dispatch(reportAction.resetallData());\r\n};\r\nexport const fetchSurveyQues = (payload) => async (dispatch) => {\r\n try {\r\n // dispatch(reportAction.getQuestionaireList());\r\n const response = await getSurveyQues(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n await dispatch(reportAction.setSurveyQues(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\nexport const fetchSurveyQuesCrossTab = (payload) => async (dispatch) => {\r\n try {\r\n // dispatch(reportAction.getQuestionaireList());\r\n const response = await getCrossTabQuestions(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n await dispatch(reportAction.setSurveyQuesCrosstab(response.data.data));\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n // dispatch(reportAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\nexport const fetchSurveyFilters = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(reportAction.getFilter());\r\n const response = await getSurveyFilter(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(reportAction.setFilterData(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.stopLoadingFilter());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\nexport const fetchSurveyChartData = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(reportAction.getChartData());\r\n\r\n const response = await getSurveyChartData(payload);\r\n\r\n if (response.status === STATUS_CODE.Ok) {\r\n if (payload.cqId !== '') {\r\n const res = response.data.data;\r\n const chartdata = processChartData(res);\r\n dispatch(reportAction.setChartData(chartdata));\r\n } else {\r\n dispatch(reportAction.setChartData(response.data.data));\r\n }\r\n } else {\r\n console.log('err', response);\r\n }\r\n } catch (err) {\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n dispatch(reportAction.stopChartLoader());\r\n }\r\n};\r\n\r\nexport const fetchSearch = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(reportAction.searchLoading(true));\r\n const response = await searchQuestionnaire(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(reportAction.setSearchData(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.searchLoading(false));\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\nexport const fetchExcelData = (payload, type, qObj) => async (dispatch) => {\r\n const fileName = removeWhiteSpace(qObj.name);\r\n\r\n try {\r\n dispatch(reportAction.getQuestionaireList());\r\n const response = await getExcelDownloadData(payload);\r\n if (response.status === STATUS_CODE.Ok) {\r\n const chartdata = response.data.data.chartData;\r\n if (type == 'pptx') {\r\n downloadPPTmulti(chartdata, fileName);\r\n } else if (type == 'excel') {\r\n downloadExcel(chartdata, fileName);\r\n dispatch(reportAction.setExcelData(response.data.data));\r\n }\r\n dispatch(reportAction.stopLoading());\r\n }\r\n } catch (err) {\r\n dispatch(reportAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description:\r\n err.response?.status === 500\r\n ? 'Internal Server Error. Please try again later.'\r\n : 'Failed to fetch data. Please check your connection.',\r\n placement: 'topRight'\r\n });\r\n }\r\n};\r\n\r\nfunction removeDuplicates(arr) {\r\n return [...new Set(arr)];\r\n}\r\n\r\nconst mergeStackedData = (data) => {\r\n const mergedData = {};\r\n\r\n data.forEach((item) => {\r\n if (!mergedData[item.name]) {\r\n mergedData[item.name] = { name: item.name, data: [], count: [] };\r\n }\r\n mergedData[item.name].data.push(...item.data);\r\n mergedData[item.name].count.push(...item.count);\r\n });\r\n\r\n return Object.values(mergedData);\r\n};\r\n\r\nexport const getChartOptions = (apiResponse) => {\r\n let stackArr = [];\r\n\r\n apiResponse.options.forEach((option) => {\r\n if (option.stack != '') {\r\n stackArr.push(option.stack);\r\n }\r\n });\r\n const uniqStack = removeDuplicates(stackArr);\r\n let categories = [];\r\n apiResponse.qText.map((item) => {\r\n uniqStack.map((stack) => {\r\n categories.push(`${item} (${stack})`);\r\n });\r\n });\r\n\r\n const seriesData = mergeStackedData(apiResponse.options);\r\n\r\n const options = {\r\n chart: {\r\n type: 'bar',\r\n marginRight: 100,\r\n height: 60 * seriesData[0].data.length\r\n },\r\n title: {\r\n text: ''\r\n },\r\n xAxis: {\r\n categories: categories\r\n },\r\n yAxis: {\r\n min: 0,\r\n title: {\r\n text: ''\r\n }\r\n },\r\n legend: {\r\n verticalAlign: 'top',\r\n useHTML: true,\r\n labelFormatter: function () {\r\n return '' + this.name + '';\r\n }\r\n },\r\n tooltip: {\r\n backgroundColor: '#ffffff',\r\n borderColor: '#7438f2',\r\n borderRadius: 10,\r\n borderWidth: 2,\r\n style: {\r\n color: '#333',\r\n fontSize: '14px',\r\n width: 250\r\n },\r\n formatter: function () {\r\n let index = this.point.index;\r\n let count = this.series.options?.count[index];\r\n return `${this.x}
    ${\r\n this.series.name\r\n }
    = ${this.y}% (N: ${\r\n count !== undefined ? count : 'N/A'\r\n })`;\r\n },\r\n shadow: true,\r\n useHTML: false,\r\n shared: false,\r\n maxWidth: 250\r\n },\r\n plotOptions: {\r\n column: {\r\n stacking: 'normal',\r\n dataLabels: {\r\n enabled: true,\r\n style: {\r\n fontFamily: 'Poppins'\r\n },\r\n formatter: function () {\r\n let index = this.point.index;\r\n let count = this.series.options?.count[index];\r\n if (this.y != 0) {\r\n return `${this.y} %, (N: ${\r\n count !== undefined ? count : 'N/A'\r\n })`;\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n },\r\n bar: {\r\n stacking: 'normal',\r\n pointWidth: 30,\r\n dataLabels: {\r\n enabled: true,\r\n style: {\r\n fontFamily: 'Poppins'\r\n },\r\n formatter: function () {\r\n let index = this.point.index;\r\n let count = this.series.options?.count[index];\r\n if (this.y != 0) {\r\n return `${this.y} %, (N: ${\r\n count !== undefined ? count : 'N/A'\r\n })`;\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n series: seriesData\r\n };\r\n\r\n return options;\r\n};\r\n","import React, { useState } from 'react';\r\nimport { Input, Button, Modal, Spin, Table, Empty } from 'antd';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport './styles.scss';\r\nimport { fetchSearch } from 'containers/Reports/reports.action';\r\n\r\nconst { Search } = Input;\r\n\r\n// const fetchQuestions = async (searchTerm) => {\r\n// console.log('searchTerm', searchTerm);\r\n// const data = [\r\n// {\r\n// name: 2024,\r\n// studyId: [\r\n// {\r\n// name: 'infy',\r\n// id: 20,\r\n// questions: [\r\n// {\r\n// qId: 'D1',\r\n// qText: 'What is your Gender',\r\n// options: ['Male', 'Female']\r\n// },\r\n// {\r\n// qId: 'D2',\r\n// qText: 'What is your Age',\r\n// options: ['18-25', '26-35', '36-45', '45+']\r\n// }\r\n// ]\r\n// },\r\n// {\r\n// name: 'wipro',\r\n// id: 20,\r\n// questions: [\r\n// {\r\n// qId: 'D1',\r\n// qText: 'What is your Gender',\r\n// options: ['Male', 'Female']\r\n// },\r\n// {\r\n// qId: 'D2',\r\n// qText: 'What is your Age',\r\n// options: ['18-25', '26-35', '36-45', '45+']\r\n// }\r\n// ]\r\n// }\r\n// ]\r\n// },\r\n// {\r\n// name: 2023,\r\n// studyId: [\r\n// {\r\n// name: 'wipro',\r\n// id: 20,\r\n// questions: [\r\n// {\r\n// qId: 'D3',\r\n// qText: 'What is your Gender 2',\r\n// options: ['Male', 'Female']\r\n// },\r\n// {\r\n// qId: 'D4',\r\n// qText: 'What is your Occupation',\r\n// options: ['Engineer', 'Doctor', 'Teacher', 'Others']\r\n// }\r\n// ]\r\n// }\r\n// ]\r\n// }\r\n// ];\r\n// return data;\r\n// };\r\n\r\nconst SearchQues = ({ updateSearchData }) => {\r\n const dispatch = useDispatch();\r\n const [searchTerm, setSearchTerm] = useState('');\r\n\r\n const [isModalVisible, setIsModalVisible] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const resultdata = useSelector((state) => state.reports);\r\n\r\n const { searchData, searchLoading } = resultdata;\r\n\r\n const handleSearchChange = (val) => {\r\n setSearchTerm(val.target.value);\r\n if (searchTerm.length < 1) {\r\n return;\r\n }\r\n };\r\n\r\n const handleSearchClick = async (val) => {\r\n setErrorMessage('');\r\n if (val.length < 1) {\r\n setErrorMessage('');\r\n return;\r\n }\r\n if (val.length < 3) {\r\n setErrorMessage('Search term must be 3+ characters.');\r\n return;\r\n }\r\n\r\n dispatch(fetchSearch(searchTerm));\r\n\r\n setIsModalVisible(true);\r\n };\r\n\r\n const handleCancelModal = () => {\r\n setIsModalVisible(false);\r\n };\r\n\r\n const handleSelectQuestion = (question) => {\r\n updateSearchData(question);\r\n setIsModalVisible(false);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n Search question\r\n \r\n \r\n {errorMessage && (\r\n

    {errorMessage}

    \r\n )}\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n

    {errorMessage}

    \r\n
    \r\n {searchLoading ? (\r\n
    \r\n \r\n
    \r\n ) : searchData.length > 0 ? (\r\n searchData?.map((study, yearindex) => (\r\n
    \r\n

    {study.name}

    \r\n\r\n {study.studyId.map((studyItem, index) => (\r\n
    \r\n
    {studyItem.name}
    \r\n ({\r\n ...question,\r\n studyName: studyItem.name,\r\n studyId: studyItem.id,\r\n year: study.name\r\n }))}\r\n pagination={false}\r\n columns={[\r\n {\r\n title: 'Question',\r\n dataIndex: 'qText',\r\n key: 'qText',\r\n render: (text, record) => {\r\n return (\r\n <>\r\n {text}\r\n
    \r\n {{record.options.join(', ')}}\r\n \r\n );\r\n }\r\n },\r\n\r\n {\r\n title: 'Action',\r\n key: 'action',\r\n width: 150,\r\n align: 'center',\r\n render: (text, record) => (\r\n handleSelectQuestion(record)}\r\n >\r\n Select\r\n \r\n )\r\n }\r\n ]}\r\n />\r\n
    \r\n ))}\r\n
    \r\n ))\r\n ) : (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SearchQues;\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport LayoutComp from 'components/LayoutComp/Index';\r\nimport { STATIC_TEXT } from 'utils/constants';\r\nimport { BackArrow } from 'utils/svg';\r\nimport Highcharts from 'highcharts';\r\nimport HighchartsReact from 'highcharts-react-official';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n Badge,\r\n Button,\r\n Col,\r\n Drawer,\r\n Form,\r\n Modal,\r\n Radio,\r\n Row,\r\n Select,\r\n Space,\r\n Table,\r\n Typography\r\n} from 'antd';\r\nimport {\r\n CloudDownloadOutlined,\r\n HomeOutlined,\r\n LeftOutlined,\r\n MenuOutlined,\r\n RightOutlined\r\n} from '@ant-design/icons';\r\nimport NoDataToDisplay from 'highcharts/modules/no-data-to-display';\r\nimport './styles.scss';\r\n\r\nNoDataToDisplay(Highcharts);\r\n\r\nimport {\r\n fetchExcelData,\r\n fetchquestionnaireNamesReports,\r\n fetchSurveyChartData,\r\n fetchSurveyFilters,\r\n fetchSurveyQues,\r\n fetchSurveyQuesCrossTab,\r\n fetchYears,\r\n getChartOptions,\r\n resetdata,\r\n fetchclientNamesReports\r\n} from './reports.action';\r\nimport {\r\n createChartData,\r\n filterObj,\r\n createTabledata,\r\n getAdjacentObjectId,\r\n getFirstAndLastQuestionId,\r\n removeWhiteSpace,\r\n exportTableToExcel\r\n} from 'utils/functions';\r\nimport Loader from 'components/ui/Loader';\r\nimport SearchQues from 'components/ui/SearchQues';\r\nimport { downloadPPTmulti } from './downloadPPT';\r\n// import { fetchCategories } from 'containers/QuestionCategory/category.action';\r\n// import ExportToExcel from 'components/ui/DownloadExcel';\r\n\r\n// Highcharts.setOptions({\r\n// colors: [\r\n// '#7438f2',\r\n// '#ff6319',\r\n// '#009150',\r\n// '#9333ea',\r\n// '#c026d3',\r\n// '#ffcc00',\r\n// '#0088cc',\r\n// '#b71c1c',\r\n// '#1e88e5',\r\n// '#f06292',\r\n// '#6d4c41',\r\n// '#26a69a'\r\n// ]\r\n// });\r\n\r\nconst baseColors = [\r\n '#7438f2',\r\n '#009150',\r\n '#FF7F0E',\r\n\r\n '#1F77B4',\r\n\r\n '#D62728',\r\n\r\n '#9467BD',\r\n\r\n '#8C564B',\r\n\r\n '#E377C2',\r\n '#7F7F7F',\r\n '#BCBD22',\r\n '#17BECF',\r\n '#F5A623',\r\n '#4E79A7',\r\n '#6fcf61',\r\n '#E15759',\r\n '#76B7B2',\r\n '#136213'\r\n];\r\n\r\nconst extendedColors = [...baseColors];\r\n\r\n// Generate more colors by modifying existing ones\r\nfor (let i = 0; i < baseColors.length; i++) {\r\n extendedColors.push(\r\n Highcharts.Color(baseColors[i])\r\n .brighten(i * 0.1)\r\n .get()\r\n );\r\n}\r\n\r\nHighcharts.setOptions({ colors: extendedColors });\r\n\r\nconst viewoptions = [\r\n { label: 'Chart View', value: 1 },\r\n { label: 'Table View', value: 2 }\r\n];\r\n\r\nconst Reports = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const [selectedYear, setSelectedYear] = useState('');\r\n const [selectedQuestionaire, setSelectedQuestionaire] = useState('');\r\n // const [client, setClient] = useState('');\r\n const [selectedQues, setSelectedQues] = useState('');\r\n const [currentView, setCurrentView] = useState(1);\r\n const [changedValue, setChangedValue] = useState([]);\r\n const [selectedFilter, setSelectedFilter] = useState({});\r\n const [chartHeight, setChartHeight] = useState(window.innerHeight * 0.5);\r\n const [isSearch, setIsSearch] = useState(false);\r\n const [form] = Form.useForm();\r\n const [selectedQuesCrossTab, setSelectedQuesCrossTab] = useState('');\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const [isFullSurvey, setIsFullSurvey] = useState(1);\r\n const [qType, setQType] = useState(null);\r\n const [currentQues, setCurrentQues] = useState();\r\n\r\n const reportStates = useSelector((state) => state.reports);\r\n const {\r\n loading,\r\n chartLoader = false,\r\n questionnaireNames = [],\r\n clientNames = [],\r\n surveyQues = [],\r\n filtersData = [],\r\n filterLoader,\r\n chartData = {},\r\n years = [],\r\n surveyQuesCrosstab = []\r\n } = reportStates;\r\n const chartAreaRef = useRef(null);\r\n // console.log(clientNames, \"abchddk\")\r\n // console.log(questionnaireNames, \"abchddk\")\r\n // Fetch questionnaire names on mount\r\n useEffect(() => {\r\n dispatch(fetchYears());\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if (years.length > 0) {\r\n const firstyear = years[0];\r\n setSelectedYear(firstyear);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [questionnaireNames, clientNames]);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setChartHeight(chartAreaRef.current.clientHeight);\r\n if (years.length > 0) {\r\n dispatch(fetchquestionnaireNamesReports({ year: years[0], client: '' }));\r\n handleResize();\r\n window.addEventListener('resize', handleResize);\r\n }\r\n if (years.length > 0) {\r\n dispatch(fetchclientNamesReports(years[0]));\r\n }\r\n\r\n return () => window.removeEventListener('resize', handleResize);\r\n // eslint-disable-next-line\r\n }, [dispatch, years]);\r\n\r\n // Fetch survey data when questionnaire names are loaded\r\n useEffect(() => {\r\n return () => {\r\n setSelectedQues('');\r\n dispatch(resetdata());\r\n };\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n // console.log('isSearch', isSearch);\r\n\r\n // Fetch question and filter data when survey questions are loaded\r\n useEffect(() => {\r\n if (surveyQues.length > 0 && !isSearch) {\r\n const firstqes = surveyQues[0];\r\n const qid = firstqes.id;\r\n setSelectedQues(qid);\r\n setCurrentQues((surveyQues.find(item => item.id === qid))?.text)\r\n const chartdataPayload = filterObj(\r\n selectedFilter,\r\n [...filtersData],\r\n qid,\r\n selectedQuestionaire\r\n );\r\n dispatch(fetchSurveyChartData(chartdataPayload));\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [surveyQues]);\r\n\r\n // Fetch actions based on selected questionnaire\r\n const executeActions = async (id) => {\r\n setSelectedQuestionaire(id);\r\n await dispatch(fetchSurveyQues(id));\r\n await dispatch(fetchSurveyQuesCrossTab(id));\r\n await dispatch(fetchSurveyFilters(id));\r\n };\r\n\r\n const handleBack = () => {\r\n history.push('/');\r\n };\r\n // Sample data for the column chart\r\n\r\n const handleYearChange = (val) => {\r\n setSelectedYear(val);\r\n setSelectedQuestionaire('');\r\n setSelectedFilter({});\r\n setSelectedQues('');\r\n };\r\n\r\n // const handleClientChange = (val) => {\r\n // // console.log(val)\r\n // setClient(val);\r\n // setSelectedQuestionaire('');\r\n // setSelectedFilter({});\r\n // setSelectedQues('');\r\n // // setClient(val)\r\n // };\r\n\r\n const handleQuestionaireChange = (val) => {\r\n executeActions(val);\r\n setSelectedFilter({});\r\n setSelectedQues('');\r\n };\r\n const handleQuestionChange =(val) => {\r\n setSelectedQues(val);\r\n setCurrentQues((surveyQues.find(item => item.id === val))?.text)\r\n\r\n const chartdataPayload = filterObj(\r\n selectedFilter,\r\n [...filtersData],\r\n val,\r\n selectedQuestionaire,\r\n false,\r\n selectedQuesCrossTab\r\n );\r\n if (!isSearch) {\r\n dispatch(fetchSurveyChartData(chartdataPayload));\r\n }\r\n };\r\n // console.log(currentQues, \"current\")\r\n const handleQuestionChangeCrossTab = (val) => {\r\n setSelectedQuesCrossTab(val == undefined ? '' : val);\r\n const chartdataPayload = filterObj(\r\n selectedFilter,\r\n [...filtersData],\r\n selectedQues,\r\n selectedQuestionaire,\r\n false,\r\n val\r\n );\r\n // chartdataPayload['cqId'] = val;\r\n // console.log('chartdataPayload', chartdataPayload);\r\n if (!isSearch) {\r\n dispatch(fetchSurveyChartData(chartdataPayload));\r\n }\r\n };\r\n\r\n const handleNextQues = (direction) => {\r\n const adjacenttId = getAdjacentObjectId(surveyQues, selectedQues, direction);\r\n handleQuestionChange(adjacenttId);\r\n };\r\n\r\n const handleHomeButtonClick = () => {\r\n const firstquesId = surveyQues[0].id;\r\n handleQuestionChange(firstquesId);\r\n };\r\n\r\n const handleViewChange = (e) => {\r\n const selectedview = e.target.value;\r\n setCurrentView(selectedview);\r\n };\r\n\r\n // Handler for form submission (Apply Filters)\r\n const onFinish = (values) => {\r\n setSelectedFilter(values);\r\n setChangedValue([]);\r\n const chartdataPayload = filterObj(\r\n values,\r\n [...filtersData],\r\n selectedQues,\r\n selectedQuestionaire,\r\n false,\r\n selectedQuesCrossTab\r\n );\r\n if (!isSearch) {\r\n dispatch(fetchSurveyChartData(chartdataPayload));\r\n }\r\n };\r\n\r\n // Reset filter form and fetch default chart data\r\n const handleClear = () => {\r\n form.resetFields(); // Reset all fields in the form\r\n setChangedValue([]);\r\n setSelectedFilter({});\r\n const formvalue = form.getFieldsValue();\r\n const chartdataPayload = filterObj(\r\n formvalue,\r\n [...filtersData],\r\n selectedQues,\r\n selectedQuestionaire,\r\n false,\r\n selectedQuesCrossTab\r\n );\r\n if (!isSearch) {\r\n dispatch(fetchSurveyChartData(chartdataPayload));\r\n }\r\n };\r\n\r\n // Handle changes in filter fields\r\n const handleonFieldChange = (changedField) => {\r\n const fieldname = changedField[0]['name'][0];\r\n if (!changedValue.includes(fieldname)) {\r\n // If not, add the new item to the array\r\n setChangedValue((prevItems) => [...prevItems, fieldname]);\r\n }\r\n };\r\n const updateSearchData = async (searchSelectedItem) => {\r\n setIsSearch(true);\r\n // console.log('searchSelectedItem', searchSelectedItem);\r\n const { qId, studyId, year } = searchSelectedItem;\r\n\r\n await setSelectedYear(year);\r\n await dispatch(fetchquestionnaireNamesReports(year));\r\n await setSelectedQuestionaire(studyId);\r\n setSelectedFilter({});\r\n await dispatch(fetchSurveyQues(studyId));\r\n await dispatch(fetchSurveyFilters(studyId));\r\n setSelectedQues(qId);\r\n const chartdataPayload = filterObj(\r\n selectedFilter,\r\n [...filtersData],\r\n qId,\r\n studyId,\r\n false,\r\n selectedQuesCrossTab\r\n );\r\n dispatch(fetchSurveyChartData(chartdataPayload));\r\n\r\n return setIsSearch(false);\r\n };\r\n\r\n const isMultiTable =\r\n (selectedQuesCrossTab != '' && chartData.qType == 9) ||\r\n chartData.qType == 10 ||\r\n chartData.qType == 4\r\n ? true\r\n : false;\r\n const {\r\n columns = [],\r\n tableData = [],\r\n crossMulti = {}\r\n } = createTabledata(chartData, isMultiTable);\r\n\r\n const handleCancel = () => {\r\n setQType(null);\r\n setIsFullSurvey(1);\r\n setIsModalOpen(false);\r\n };\r\n\r\n const singleDownload = (fileName, type, isCrossTab) => {\r\n if (type == 'pptx') {\r\n downloadPPTmulti([chartData], fileName, isCrossTab, isMultiTable);\r\n } else {\r\n exportTableToExcel('tbl2excel', fileName);\r\n }\r\n };\r\n\r\n const [isSidebarVisible, setSidebarVisible] = useState(false);\r\n\r\n const toggleSidebar = () => {\r\n setSidebarVisible(!isSidebarVisible);\r\n };\r\n\r\n const handleExcelDownload = (type, isModal = false) => {\r\n const selectedQuestionaireNameObj = questionnaireNames.filter(\r\n (item) => item.id == selectedQuestionaire\r\n );\r\n\r\n const chartdataPayload = filterObj(\r\n selectedFilter,\r\n [...filtersData],\r\n selectedQues,\r\n selectedQuestionaire,\r\n true\r\n );\r\n if (selectedQuesCrossTab != '' || isFullSurvey == 1) {\r\n const fileName = removeWhiteSpace(selectedQuestionaireNameObj[0].name);\r\n singleDownload(fileName, type, selectedQuesCrossTab == '' ? false : true);\r\n\r\n // if (type == 'pptx') {\r\n // downloadPPTmulti(\r\n // [chartData],\r\n // fileName,\r\n // selectedQuesCrossTab == '' ? false : true,\r\n // isMultiTable\r\n // );\r\n // } else {\r\n // exportTableToExcel('tbl2excel', fileName);\r\n // }\r\n } else {\r\n dispatch(fetchExcelData(chartdataPayload, type, selectedQuestionaireNameObj[0]));\r\n }\r\n if (isModal) {\r\n setIsModalOpen(false);\r\n setQType(null);\r\n setIsFullSurvey(1);\r\n }\r\n };\r\n\r\n const onChange = (e) => {\r\n setIsFullSurvey(e.target.value);\r\n };\r\n // console.log(surveyQues, \"ques\")\r\n const { firstQuestionId, lastQuestionId } = getFirstAndLastQuestionId(surveyQues);\r\n\r\n return (\r\n
    \r\n \r\n {chartLoader && }\r\n {loading && }\r\n
    \r\n {/* */}\r\n {/* Hamburger Menu for Mobile */}\r\n
    \r\n \r\n
    \r\n\r\n\r\n {/* Sidebar - Use Ant Design Drawer for Mobile */}\r\n \r\n
    \r\n

    Filter

    \r\n {!filterLoader ? (\r\n
    \r\n
    \r\n {filtersData?.map((item) => (\r\n \r\n ({\r\n label: option.text,\r\n value: option.preCode,\r\n }))}\r\n />\r\n \r\n ))}\r\n
    \r\n {filtersData && filtersData.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n ) : (\r\n
    Loading...
    \r\n )}\r\n
    \r\n \r\n\r\n {/* Sidebar for Desktop */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Select Year\r\n {\r\n return { value: item, label: item };\r\n })}\r\n />\r\n
    \r\n
    \r\n Select Questionnaire\r\n ({\r\n value: item.id,\r\n label: item.name\r\n }))}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n }\r\n size=\"middle\"\r\n onClick={() => {\r\n if (selectedQuesCrossTab == '') {\r\n setIsModalOpen(true);\r\n setQType('excel');\r\n } else {\r\n handleExcelDownload('excel');\r\n }\r\n }}\r\n disabled={selectedQues === ''}\r\n style={{ marginRight: 15, marginTop: 24 }}\r\n >\r\n Excel\r\n \r\n\r\n }\r\n size=\"middle\"\r\n disabled={selectedQues === ''}\r\n onClick={() => {\r\n if (selectedQuesCrossTab == '') {\r\n setIsModalOpen(true);\r\n setQType('pptx');\r\n } else {\r\n handleExcelDownload('pptx');\r\n }\r\n }}\r\n >\r\n PPT\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {/*
    */}\r\n \r\n Select the question you would like to visualize as chart\r\n \r\n {\r\n return {\r\n value: item.id,\r\n label:\r\n item.title != ''\r\n ? `[${item.id}] ${item.title}`\r\n : `[${item.id}] ${item.text}`\r\n };\r\n })}\r\n />\r\n \r\n\r\n \r\n \r\n Select the question to cross tabulate\r\n \r\n {\r\n return { value: item.id, label: `[${item.id}]${item.text}` };\r\n })}\r\n />\r\n \r\n {selectedQues && currentQues && {`[${selectedQues}]` + \" \" + currentQues}}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {selectedQuestionaire != '' ? (\r\n <>\r\n
    \r\n \r\n
    \r\n {currentView === 1 ? (\r\n
    \r\n {Object.keys(chartData).length > 0 && !chartLoader && (\r\n <>\r\n \r\n {/* getChartOptions */}\r\n
    \r\n Base: {chartData?.base}\r\n
    \r\n \r\n )}\r\n
    \r\n ) : (\r\n
    \r\n {isMultiTable ? (\r\n
    \r\n \r\n \r\n \r\n \r\n {crossMulti.quesText.map((item, index) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n })}\r\n \r\n \r\n {crossMulti.quesText.map((qt) => {\r\n return (\r\n \r\n {crossMulti.groupbystack[0].stack.map((item, index) => {\r\n const keys = Object.keys(item);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {crossMulti.groupbystack.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.stack.map((stack, stckindex) => {\r\n const keys = Object.keys(stack);\r\n return (\r\n \r\n {crossMulti.quesText.map((_, qtindex) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n
    Question
    \r\n {keys}\r\n
    {item.name}\r\n {stack[keys].data[qtindex]}%{' '}\r\n \r\n (N=\r\n {stack[keys].count[qtindex]})\r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n )}\r\n\r\n
    \r\n Base: {chartData?.base}\r\n
    \r\n
    \r\n )}\r\n \r\n ) : (\r\n \r\n Please select a questionnaire to view the chart\r\n
    \r\n )}\r\n
    \r\n {isMultiTable && (\r\n
    \r\n \r\n \r\n \r\n \r\n {chartData.title}\r\n \r\n \r\n \r\n \r\n {crossMulti.quesText.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n {crossMulti.quesText.map((qt) => {\r\n return (\r\n \r\n {crossMulti.groupbystack[0].stack.map((item, index) => {\r\n const keys = Object.keys(item);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {crossMulti.groupbystack.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.stack.map((stack, stckindex) => {\r\n const keys = Object.keys(stack);\r\n return (\r\n \r\n {crossMulti.quesText.map((_, qtindex) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n
    Question\r\n {item}\r\n
    \r\n {keys}\r\n
    {item.name}\r\n {stack[keys].data[qtindex]}%{' '}\r\n \r\n (N=\r\n {stack[keys].count[qtindex]})\r\n \r\n
    Base{chartData.base}
    \r\n
    \r\n )}\r\n {!isMultiTable && (\r\n
    \r\n \r\n \r\n {selectedQuesCrossTab != '' && (\r\n \r\n \r\n \r\n )}\r\n \r\n {columns?.map((item) => {\r\n return ;\r\n })}\r\n \r\n \r\n \r\n {tableData?.map((ditem, index) => (\r\n \r\n {columns?.map((item) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n
    {chartData.title}
    {item.title}
    \r\n {ditem[item.dataIndex].split('$$$$')[0]}{' '}\r\n {ditem[item.dataIndex].split('$$$$')[1]}\r\n
    Base{chartData?.base}
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n }\r\n size=\"small\"\r\n onClick={() => handleNextQues('previous')}\r\n >\r\n Previous\r\n \r\n\r\n }\r\n size=\"small\"\r\n onClick={handleHomeButtonClick}\r\n >\r\n Home\r\n \r\n\r\n handleNextQues('next')}\r\n >\r\n Next\r\n \r\n \r\n \r\n
    \r\n
    © 2025 Curious Insights | All Rights Reserved
    \r\n
    \r\n handleExcelDownload(qType, true)}\r\n onCancel={handleCancel}\r\n okText={`Download ${qType}`}\r\n >\r\n \r\n \r\n ;\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Reports;\r\n","import { STATUS_CODE } from 'common/constants';\r\nimport { managequesAction } from './manageques.slice';\r\nimport { importDataApi, updatequestionnaireNamesApi } from 'utils/apis';\r\nimport { notification } from 'antd';\r\n\r\nexport const UpdateQuestionnaire = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(managequesAction.startLoading());\r\n const response = await updatequestionnaireNamesApi(payload);\r\n // Check if the response is successful\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(managequesAction.stopLoading(response.data.data));\r\n notification.success({\r\n message: 'Success',\r\n description: 'The questionnaire was updated successfully.',\r\n duration: 5\r\n });\r\n } else {\r\n dispatch(managequesAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description: 'Failed to update the questionnaire.',\r\n duration: 5\r\n });\r\n }\r\n } catch (err) {\r\n dispatch(managequesAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description: 'An error occurred while updating the questionnaire.',\r\n duration: 5\r\n });\r\n\r\n console.error('Error updating questionnaire:', err);\r\n }\r\n};\r\nexport const importData = (payload) => async (dispatch) => {\r\n dispatch(managequesAction.startLoading());\r\n\r\n try {\r\n const response = await importDataApi(payload);\r\n\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(managequesAction.stopLoading(response.data.data));\r\n notification.success({\r\n message: 'Success',\r\n description: 'The questionnaire was imported successfully.',\r\n duration: 5\r\n });\r\n } else {\r\n dispatch(managequesAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description: 'Failed to import the questionnaire.',\r\n duration: 5\r\n });\r\n }\r\n } catch (err) {\r\n dispatch(managequesAction.stopLoading());\r\n notification.error({\r\n message: 'Error',\r\n description: 'An error occurred while importing the questionnaire.',\r\n duration: 5\r\n });\r\n\r\n console.error('Error importing questionnaire:', err);\r\n }\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Modal, Button, Form, Input, Upload, notification, AutoComplete } from 'antd';\r\nimport { UploadOutlined } from '@ant-design/icons';\r\nimport { useDispatch } from 'react-redux';\r\nimport { importData } from '../manageques.action';\r\nimport { fetchquestionnaireNames } from 'containers/QuestionCategory/category.action';\r\n\r\nconst { Dragger } = Upload;\r\n\r\nexport const ImportModal = ({\r\n isModalOpen,\r\n handleOk,\r\n handleCancel,\r\n loader,\r\n years,\r\n currentQues,\r\n activeYear,\r\n isEdit\r\n}) => {\r\n const dispatch = useDispatch();\r\n const [fileList, setFileList] = useState([]);\r\n const [form] = Form.useForm();\r\n\r\n useEffect(() => {\r\n // Only set fields if currentQues is not empty\r\n if (currentQues && Object.keys(currentQues).length > 0) {\r\n form.setFieldsValue({\r\n id: currentQues.id || '',\r\n title: currentQues.name || '',\r\n year: currentQues.year || activeYear || '',\r\n file: []\r\n });\r\n } else {\r\n form.resetFields();\r\n }\r\n\r\n // Cleanup function to reset form fields when the modal is closed or form is unmounted\r\n return () => {\r\n form.resetFields();\r\n };\r\n }, [currentQues, activeYear, form]);\r\n\r\n useEffect(() => {\r\n if (!loader) {\r\n dispatch(fetchquestionnaireNames(activeYear));\r\n if (currentQues && !(Object.keys(currentQues).length > 0)) {\r\n form.resetFields();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [loader]);\r\n\r\n const onFinish = async (values) => {\r\n const { title, year } = values;\r\n const formData = new FormData();\r\n\r\n // Make sure a file has been uploaded before proceeding\r\n if (fileList.length > 0) {\r\n formData.append('file', fileList[0].originFileObj);\r\n }\r\n\r\n const payload = {\r\n file: formData,\r\n title: isEdit ? '' : title,\r\n year: isEdit ? '' : year,\r\n id: values.id || ''\r\n };\r\n // console.log('payload', payload);\r\n\r\n dispatch(importData(payload));\r\n };\r\n\r\n const beforeUpload = (file) => {\r\n const isCSVOrXLSX =\r\n file.type === 'application/vnd.ms-excel' ||\r\n file.name.endsWith('.csv') ||\r\n file.name.endsWith('.xlsx');\r\n\r\n if (!isCSVOrXLSX) {\r\n notification.error({\r\n message: 'Invalid File Type',\r\n description: 'You can only upload CSV or XLSX files.',\r\n duration: 5\r\n });\r\n return false;\r\n }\r\n return false;\r\n };\r\n\r\n const handleChange = ({ fileList: newFileList }) => setFileList(newFileList);\r\n\r\n const yearOptions = years.map((year) => ({ value: year }));\r\n\r\n return (\r\n \r\n

    Upload Questionnaire

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {\r\n if (/[^0-9]/.test(value)) {\r\n form.setFieldsValue({\r\n year: value.replace(/[^0-9]/g, '')\r\n });\r\n }\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n

    \r\n \r\n

    \r\n

    Click or drag file to this area to upload

    \r\n

    Only upload CSV or XLSX files

    \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ImportModal;\r\n","import LayoutComp from 'components/LayoutComp/Index';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { STATIC_TEXT } from 'utils/constants';\r\nimport { BackArrow } from 'utils/svg';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { fetchYears, fetchquestionnaireNames } from 'containers/QuestionCategory/category.action';\r\nimport { Table, Button, Input, Space, Select } from 'antd';\r\nimport { EditOutlined } from '@ant-design/icons';\r\nimport Loader from 'components/ui/Loader';\r\nimport { CloudUploadOutlined } from '@ant-design/icons';\r\nimport './styles.scss';\r\nimport { UpdateQuestionnaire } from './manageques.action';\r\nimport ImportModal from './Components/ImportModal';\r\n\r\nconst ManageQuestions = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const categoriesState = useSelector((state) => state.category);\r\n const loading = useSelector((state) => state.manageques.loading);\r\n const { questionLoader = false, questionnaireNames = [], years = [] } = categoriesState;\r\n const [activeYear, setActiveYear] = useState(null);\r\n const [columns, setColumns] = useState([]);\r\n const [editingKey, setEditingKey] = useState('');\r\n const [nameInput, setNameInput] = useState('');\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const [currentQues, setCurrentQues] = useState({});\r\n const [isEdit, setIsEdit] = useState(false);\r\n\r\n useEffect(() => {\r\n dispatch(fetchYears());\r\n // eslint-disable-next-line\r\n }, [dispatch]);\r\n\r\n const handleBack = () => {\r\n history.push('/');\r\n };\r\n\r\n useEffect(() => {\r\n if (years.length > 0) {\r\n const firstyear = years[0];\r\n setActiveYear(firstyear);\r\n dispatch(fetchquestionnaireNames(firstyear));\r\n }\r\n // eslint-disable-next-line\r\n }, [years]);\r\n\r\n useEffect(() => {\r\n if (questionnaireNames.length > 0) {\r\n const dynamicColumns = Object.keys(questionnaireNames[0]).map((key) => ({\r\n title: key.charAt(0).toUpperCase() + key.slice(1),\r\n dataIndex: key,\r\n key: key\r\n }));\r\n\r\n dynamicColumns.forEach((column) => {\r\n if (column.dataIndex === 'id' || column.dataIndex === 'action') {\r\n column.width = 75;\r\n }\r\n });\r\n\r\n dynamicColumns.push({\r\n title: 'Action',\r\n key: 'action',\r\n render: (text, record) => (\r\n \r\n ),\r\n width: 150\r\n });\r\n\r\n const nameColumn = dynamicColumns.find((col) => col.dataIndex === 'name');\r\n if (nameColumn) {\r\n nameColumn.render = (text, record) => (\r\n \r\n {/* Show Name */}\r\n {editingKey === record.id ? (\r\n setNameInput(e.target.value)}\r\n style={{ width: 350 }}\r\n />\r\n ) : (\r\n text\r\n )}\r\n {/* Show Edit Icon */}\r\n {editingKey !== record.id && (\r\n handleEdit(record)}\r\n style={{ cursor: 'pointer', color: '#7438f2' }}\r\n />\r\n )}\r\n {/* Show Save Button */}\r\n {editingKey === record.id && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n setColumns(dynamicColumns);\r\n }\r\n // eslint-disable-next-line\r\n }, [questionnaireNames, editingKey, nameInput]);\r\n\r\n const handleEdit = (record) => {\r\n setEditingKey(record.id);\r\n setNameInput(record.name);\r\n };\r\n const handleUpdate = (record) => {\r\n setIsEdit(true);\r\n setCurrentQues(record);\r\n setIsModalOpen(true);\r\n };\r\n\r\n const handleCancel = () => {\r\n setCurrentQues({});\r\n setIsEdit(false);\r\n setIsModalOpen(false);\r\n };\r\n\r\n const handleSave = async (record) => {\r\n try {\r\n const payload = {\r\n id: record.id,\r\n title: nameInput,\r\n description: '',\r\n year: activeYear\r\n };\r\n await dispatch(UpdateQuestionnaire(payload));\r\n dispatch(fetchquestionnaireNames(activeYear));\r\n setEditingKey('');\r\n setNameInput('');\r\n } catch (error) {\r\n console.error('Error saving data:', error);\r\n }\r\n };\r\n const showModal = () => {\r\n setIsModalOpen(true);\r\n };\r\n\r\n const renderTable = () => {\r\n if (questionLoader) {\r\n return ;\r\n }\r\n\r\n return ;\r\n };\r\n\r\n const handleYearChange = (val) => {\r\n setActiveYear(val);\r\n dispatch(fetchquestionnaireNames(val));\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {STATIC_TEXT['MANAGE_QUESTIONS']}\r\n
    \r\n {questionLoader && }\r\n
    \r\n
    \r\n
    \r\n Select Years  \r\n {\r\n return { value: item, label: item };\r\n })}\r\n />\r\n
    \r\n \r\n
    \r\n {renderTable()}\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ManageQuestions;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst NotFound = () => {\r\n return (\r\n
    \r\n

    404

    \r\n

    Oops! The page you are looking for does not exist.

    \r\n Go to Homepage\r\n
    \r\n );\r\n};\r\n\r\nexport default NotFound;\r\n","import { useEffect, useState } from 'react';\r\nimport { Switch, useLocation, useHistory } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { PrivateRoute, PrivateRouteAdmin } from 'protectedRoute';\r\n\r\nimport { NAVIGATION } from 'common/constants';\r\n// import WarningModal from 'components/WarningModal';\r\n\r\nimport Dashbord from 'containers/Dashboard';\r\nimport AuthStore from 'common/authStore';\r\n// import { useCallback } from 'react';\r\n\r\nimport ErrorPage from 'containers/ErrorPage';\r\nimport QuestionCategory from 'containers/QuestionCategory/index.js';\r\nimport Questions from 'containers/Questions';\r\nimport Download from 'containers/Download';\r\nimport WarningModal from 'components/WarningModal';\r\nimport AccountSettings from 'containers/AccountSettings';\r\nimport Reports from 'containers/Reports';\r\nimport ManageQuestions from 'containers/ManageQuestions';\r\nimport { decrypt } from 'utils/functions';\r\nimport NotFound from 'components/NotFound';\r\n\r\nfunction Routes() {\r\n const location = useLocation();\r\n // const dispath = useDispatch();\r\n const history = useHistory();\r\n const [tokenToUse, updateToken] = useState(AuthStore.accessToken);\r\n const usertypestr = localStorage.getItem('usertype');\r\n\r\n let usertype = null;\r\n if (usertypestr && usertypestr != '') {\r\n usertype = decrypt(usertypestr);\r\n }\r\n\r\n useEffect(() => {\r\n if (!tokenToUse && AuthStore.accessToken) {\r\n updateToken(AuthStore.accessToken);\r\n }\r\n // eslint-disable-next-line\r\n }, [AuthStore.accessToken]);\r\n\r\n useEffect(() => {\r\n if (tokenToUse && location.pathname === NAVIGATION.Login) {\r\n history.push(NAVIGATION.HomePage);\r\n }\r\n // eslint-disable-next-line\r\n }, [tokenToUse]);\r\n\r\n const hasError = useSelector((state) => state.auth.isError);\r\n const errorDetails = useSelector((state) => state.auth.errorDetails);\r\n const tokenExpired = useSelector((state) => state.auth.tokenExpired);\r\n\r\n if (hasError) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n {tokenExpired && }\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default Routes;\r\n","import { getUserInfoApi, getUserProfile, loginApi } from 'utils/apis';\r\nimport { authAction } from './auth.slice';\r\nimport AuthStore from 'common/authStore';\r\nimport { STATUS_CODE } from 'common/constants';\r\nimport { encrypt, parseJwt } from 'utils/functions';\r\n\r\nexport const fetchUserDetails = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(authAction.getUserInfo());\r\n const response = await loginApi(payload);\r\n console.log('response', response);\r\n\r\n if (response.status === STATUS_CODE.Ok) {\r\n const token = response?.data?.data;\r\n\r\n AuthStore.accessToken = token;\r\n\r\n const tokenObj = parseJwt(token);\r\n const { Email, Name, Surname } = tokenObj;\r\n AuthStore.firstName = Name;\r\n try {\r\n dispatch(authAction.startLoading());\r\n const responseProfile = await getUserProfile(Email);\r\n console.log('response.status', responseProfile.status);\r\n if (responseProfile.status === STATUS_CODE.Ok) {\r\n const { user_Role } = responseProfile.data.data;\r\n const userroleEncrypt = encrypt(user_Role);\r\n localStorage.setItem('usertype', userroleEncrypt);\r\n dispatch(authAction.setUserProfile(responseProfile.data.data));\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n // dispatch(authAction.stopLoading());\r\n }\r\n dispatch(\r\n authAction.setUserInfo({\r\n userFirstName: Name,\r\n userLastName: Surname,\r\n emailId: Email\r\n })\r\n );\r\n } else {\r\n dispatch(authAction.authError());\r\n }\r\n } catch (e) {\r\n // if (e.response?.status == 401) {\r\n // dispatch(authAction.setError({ isError: true, error: e }));\r\n // }\r\n if (e.response?.status == 400) {\r\n dispatch(authAction.setError({ isError: true, error: e.response.data }));\r\n }\r\n dispatch(authAction.authError());\r\n }\r\n};\r\n\r\nexport const fetUserRole = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(authAction.getUserRole());\r\n const response = await getUserInfoApi(payload);\r\n\r\n if (response.statusText === 'OK' && response.status === STATUS_CODE.Ok) {\r\n const data = response?.data?.data;\r\n // console.log('data', data);\r\n sessionStorage.setItem('roles', JSON.stringify(data));\r\n\r\n // dispatch(\r\n // authAction.setUserInfo({\r\n // userFirstName: tokenObj.Name,\r\n // userLastName: tokenObj.Surname,\r\n // emailId: tokenObj.Email\r\n // })\r\n // );\r\n\r\n dispatch(authAction.stopLoading());\r\n } else {\r\n dispatch(authAction.stopLoading());\r\n // dispatch(authAction.authError());\r\n }\r\n } catch (e) {\r\n dispatch(authAction.stopLoading());\r\n console.log(e);\r\n }\r\n};\r\n\r\nexport const setUserData = (token) => async (dispatch) => {\r\n if (token !== '') {\r\n const tokenObj = parseJwt(token);\r\n AuthStore.firstName = tokenObj.Name;\r\n dispatch(\r\n authAction.setUserInfo({\r\n userFirstName: tokenObj.Name,\r\n userLastName: tokenObj.Surname,\r\n emailId: tokenObj.Email\r\n })\r\n );\r\n }\r\n};\r\n\r\nexport const fetchUserProfile = (payload) => async (dispatch) => {\r\n try {\r\n dispatch(authAction.startLoading());\r\n const response = await getUserProfile(payload);\r\n // console.log('response.status', response.status);\r\n if (response.status === STATUS_CODE.Ok) {\r\n dispatch(authAction.setUserProfile(response.data.data));\r\n }\r\n } catch (err) {\r\n dispatch(authAction.stopLoading());\r\n }\r\n};\r\n","import AuthStore from 'common/authStore';\r\nimport { useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n// import { Alert, Col, Row } from 'antd';\r\nimport { CuriousLogo2, LoginLeftBg, SfsDark } from 'assets';\r\n// import { Button, Form, Input } from 'antd';\r\nimport { fetchUserDetails, fetUserRole, setUserData } from './auth.action';\r\n\r\nimport './styles.scss';\r\nimport { AUTH_STATUS } from 'common/constants';\r\nimport Loader from 'components/ui/Loader';\r\n\r\n// import { useState } from \"react\";\r\nimport { Row, Col, Form, Input, Button, Alert, Spin } from 'antd';\r\n// import { AUTH_STATUS } from \"./constants\"; // Assuming you have AUTH_STATUS defined\r\n// import Loader from \"./Loader\"; // Assuming you have a Loader component\r\n// import LoginLeftBg from \"./LoginLeftBg.png\"; // Replace with actual import\r\n// import SfsDark from \"./SfsDark.png\"; // Replace with actual import\r\n// import CuriousLogo from \"./CuriousLogo.png\"; // Replace with actual import\r\n// import \"./Login.css\"; // New CSS file for responsiveness\r\n\r\nfunction Login({ children }) {\r\n const token = AuthStore.accessToken;\r\n const dispatch = useDispatch();\r\n const userData = useSelector((state) => state.auth);\r\n const { isError, isAuthorized, loading, tokenExpired } = userData;\r\n // const currentTime = new Date().getTime();\r\n\r\n useEffect(() => {\r\n if (token) {\r\n dispatch(setUserData(token));\r\n dispatch(fetUserRole());\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [token, tokenExpired]);\r\n\r\n /* useEffect(() => {\r\n // Token expiration time (example: 1729027815)\r\n const tokenExpireTime = AuthStore.expireat;\r\n const currentTime = Math.floor(Date.now() / 1000);\r\n if (currentTime >= tokenExpireTime) {\r\n AuthStore.emptyStore();\r\n setIsTokenExpired(true);\r\n } else {\r\n setIsTokenExpired(false);\r\n }\r\n const interval = setInterval(() => {\r\n console.log('interval');\r\n const updatedTime = Math.floor(Date.now() / 1000);\r\n if (updatedTime >= tokenExpireTime) {\r\n console.log('expired');\r\n setIsTokenExpired(true);\r\n }\r\n }, 1000); // Check every second\r\n\r\n // Clean up the interval on component unmount\r\n return () => clearInterval(interval);\r\n }, []); */\r\n\r\n const onFinish = (values) => {\r\n const finalpayload = {\r\n ...values,\r\n userInfo: {\r\n ip: 'string',\r\n city: 'string',\r\n country: 'string',\r\n browserName: 'string'\r\n }\r\n };\r\n dispatch(fetchUserDetails(finalpayload));\r\n // const token =\r\n // 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';\r\n // AuthStore.accessToken = token;\r\n\r\n // dispatch(fetchUserDetailsfalse());\r\n // location.reload();\r\n };\r\n const onFinishFailed = (errorInfo) => {\r\n console.log('Failed:', errorInfo);\r\n };\r\n\r\n // setInterval(() => {\r\n // if (accessToken != '' && currentTime < expireatStamp) {\r\n // mid.refresh().then(() => {\r\n // const access_token = mid.accessToken();\r\n // AuthStore.accessToken = access_token;\r\n // });\r\n // }\r\n // }, 900000);\r\n\r\n const submitForm = () => {\r\n sessionStorage.removeItem('prevroute');\r\n console.log('submit login form');\r\n };\r\n\r\n // return isAuthorized === AUTH_STATUS.Authorized ? (\r\n // children\r\n // ) : (\r\n //
    \r\n // {loading && }\r\n // \r\n //
    \r\n // \"login\r\n // \r\n // \r\n //
    \r\n //
    \r\n // \"logo\"\r\n //
    \r\n //
    \r\n // \"logo\"\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //

    Log in

    \r\n //

    Welcome back!

    \r\n // {isError && (\r\n // \r\n // )}\r\n //
    \r\n // \r\n // \r\n // \r\n // \r\n\r\n // \r\n // \r\n // \r\n\r\n // \r\n // \r\n // \r\n // \r\n //
    © 2025 Curious Insights | All Rights Reserved
    \r\n //
    \r\n // \r\n // \r\n // \r\n return isAuthorized === AUTH_STATUS.Authorized ? (\r\n children\r\n ) : (\r\n
    \r\n {loading && }\r\n \r\n
    \r\n \"login\r\n \r\n \r\n
    \r\n
    \r\n \"logo\"\r\n \"logo\"\r\n
    \r\n
    \r\n

    Please enter your credentials

    \r\n {/*

    Welcome back!

    */}\r\n {isError && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
    \r\n © 2025 Curious Insights | All Rights Reserved\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Login;\r\n","export default \"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMqaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAxNCA3OS4xNTE0ODEsIDIwMTMvMDMvMTMtMTI6MDk6MTUgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Mjc1NURCNzEwNEI2MTFGMEI3RjNFNEFCREMzOEY3RTciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Mjc1NURCNzIwNEI2MTFGMEI3RjNFNEFCREMzOEY3RTciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNzU1REI2RjA0QjYxMUYwQjdGM0U0QUJEQzM4RjdFNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNzU1REI3MDA0QjYxMUYwQjdGM0U0QUJEQzM4RjdFNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYI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\"","import { BrowserRouter } from 'react-router-dom';\r\n\r\nimport './App.scss';\r\nimport Routes from './routes';\r\nimport AUTH_CONFIG from './utils/authConfig';\r\nimport Login from 'containers/Login';\r\n\r\nfunction App() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport store from './store/store';\r\nimport 'normalize.css';\r\nimport { ConfigProvider } from 'antd';\r\nimport './index.scss';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"categoryname\":\"styles_categoryname__2iliu\",\"quetionOptions\":\"styles_quetionOptions__3r9No\",\"active\":\"styles_active__2xVbJ\",\"gutter15\":\"styles_gutter15__2ET5f\",\"questionResize\":\"styles_questionResize__37lvz\",\"quesType\":\"styles_quesType__13ugD\",\"question\":\"styles_question__2Frac\",\"selectall\":\"styles_selectall__2kRhM\",\"questionCtrl\":\"styles_questionCtrl__2wdgi\",\"notSelected\":\"styles_notSelected__1AfBA\",\"litwocol\":\"styles_litwocol__1ZvKk\",\"qcheckboxgroup\":\"styles_qcheckboxgroup__1LwMb\"};"],"sourceRoot":""}