{"version":3,"sources":["images/twotone-delete-24px.png","images/View.png","images/View_disabled.png","images/start_over.png","images/c-add.png","images/edit.png","images/check.png","images/Shape.png","images/upload.png","images/profile-def.png","images/c-add2x.png","images/information.png","images/start_over_big.png","images/browser.png","admin/buttons/ButtonAdd.js","admin/header/HeaderAdd.js","admin/buttons/ButtonGroup.js","admin/items/BaseItem.js","utils/PathsApp.js","admin/questions/QuestionItem.js","utils/ErrorsApp.js","admin/questions/QuestionConstants.js","utils/PathResolver.js","admin/questions/QuestionApi.js","admin/categories/CategoryApi.js","admin/categories/CategoryConstants.js","admin/features/FeatureConstants.js","admin/features/FeatureApi.js","admin/login/LoginApi.js","admin/login/LoginConstants.js","admin/login/UserModel.js","admin/login/LoginAction.js","admin/categories/CategoryActions.js","models/BaseModel.js","admin/features/FeatureModel.js","admin/features/FeatureActions.js","admin/questions/LayoutTypeModel.js","utils/UuidUtil.js","admin/questions/QuestionRequestModel.js","admin/questions/QuestionModel.js","admin/questions/QuestionAnswerRequestModel.js","admin/questions/QuestionAnswerModel.js","admin/options/OptionConstants.js","admin/options/OptionApi.js","utils/UploadFile.js","admin/uploadImage/UploadImageConstants.js","admin/uploadImage/UploadImageActions.js","models/TypeLayoutEnum.js","admin/options/OptionModel.js","admin/questions/RangeModel.js","admin/questions/QuestionAction.js","alerts/AlertContainer.js","admin/questions/QuestionListContainer.js","admin/pagination/PaginationContainer.js","admin/list/ListContainer.js","admin/products/ProductItem.js","admin/products/ProductConstants.js","admin/products/ProductApi.js","admin/options/OptionActions.js","admin/products/ProductSortEnum.js","admin/products/ProductAction.js","admin/products/ProductFilter.js","admin/products/ProductListContainer.js","admin/items/ItemParent.js","admin/categories/CategoryItem.js","admin/categories/CategoryContainer.js","admin/header/HeaderSaveSimple.js","admin/layout/LayoutApi.js","admin/layout/LayoutConstants.js","admin/layout/LayoutActions.js","admin/uploadImage/UploadImageContainer.js","admin/layout/LayoutContainer.js","nav/NavApp.js","admin/preview/PreviewApi.js","admin/preview/PreviewConstants.js","admin/preview/PreviewActions.js","client/wizard/WizardConstants.js","client/wizard/WizardApi.js","client/wizard/WizardActions.js","client/helper/HelperConstants.js","client/helper/HelperButton.js","client/helper/HelperContainer.js","client/helper/HelperActions.js","client/options/OptionsList.js","client/options/OptionBase.js","client/options/OptionCard.js","client/options/OptionGrid.js","client/options/OptionIcon.js","client/options/OptionPlain.js","client/question/QuestionMessage.js","client/question/QuestionContainer.js","admin/preview/PreviewSelectModal.js","admin/nav/NavAdmin.js","admin/master/MasterAdmin.js","admin/master/MasterLogin.js","admin/master/MasterPreview.js","app/AppRoute.js","admin/login/LoginContainer.js","admin/products/ProductFeatureItem.js","admin/buttons/ButtonModal.js","admin/products/ProductOptions.js","admin/products/ProductFeatures.js","admin/buttons/ButtonGroupDetail.js","admin/header/HeaderSave.js","admin/products/ProductModel.js","admin/products/ProductContainer.js","admin/header/HeaderChildAdd.js","admin/features/FeatureItem.js","admin/features/FeatureContainer.js","admin/options/OptionItem.js","admin/options/OptionContainer.js","admin/questions/QuestionAnswerBase.js","admin/questions/QuestionAnswerIconItem.js","admin/questions/QuestionAnswerTextItem.js","admin/questions/QuestionRangeItem.js","admin/questions/QuestionContainer.js","client/startover/StartOverConstants.js","client/startover/StartOverActions.js","client/startover/StartOverContainer.js","client/result/ResultApi.js","client/result/ResultAction.js","client/result/ResultConstants.js","client/wizard/WizardSetup.js","admin/preview/PreviewContainer.js","client/home/HomeSetup.js","client/home/HomeConstants.js","client/home/HomeApi.js","client/home/HomeActions.js","client/distributor/DistributorClientApi.js","client/distributor/DistributorClientConstants.js","client/distributor/DistributorClientModel.js","client/distributor/DistributorClientUtils.js","client/distributor/DistributorClientAction.js","client/distributor/DistributorNotFound.js","client/home/HomeContainer.js","client/nav/NavClient.js","client/master/MasterClient.js","client/steps/StepsContainer.js","client/result/ResultItem.js","client/result/ResultList.js","client/result/ResultContainer.js","app/UnauthenticatedRoute.js","app/AuthenticatedRoute.js","utils/BrowserUtil.js","browser/InternetExplorerContainer.js","admin/distributors/DistributorItem.js","admin/distributors/DistributorConstants.js","admin/distributors/DistributorApi.js","admin/distributors/DistributorRequestModel.js","admin/distributors/ProductDistributorRequestModel.js","admin/distributors/DistributorAction.js","admin/distributors/DistributorListContainer.js","admin/distributors/ProductDistributorItem.js","admin/distributors/ProductsDistributor.js","admin/distributors/ProductSelectItem.js","admin/distributors/ProductSelectList.js","admin/distributors/ProductSelectorModal.js","admin/distributors/ProductSelectedModal.js","admin/distributors/DistributorContainer.js","app/App.js","registerServiceWorker.js","admin/categories/CategoryReducer.js","admin/features/FeatureReducer.js","admin/options/OptionReducer.js","client/helper/HelperReducer.js","client/wizard/WizardReducer.js","client/startover/StartOverReducer.js","admin/questions/QuestionAdminReducer.js","admin/products/ProductAdminReducer.js","admin/layout/LayoutModel.js","admin/layout/LayoutAdminReducer.js","client/result/ResultReducer.js","admin/preview/PreviewReducer.js","admin/login/LoginReducer.js","client/home/HomeReducer.js","admin/uploadImage/UploadImageReducer.js","admin/distributors/DistributorAdminReducer.js","client/distributor/DistributorClientReducer.js","index.js","images/check_rounded.png","images/not-found-icon.jpg","images/Group.png","images/Netgear_Business2x.png","images/chevLeft.png"],"names":["module","exports","ButtonAdd","props","className","color","onClick","handleAdd","text","alt","src","Plus","HeaderAdd","fluid","title","addText","ButtonGroup","handleSave","Check","handleEdit","Pencil","handleDelete","Trash","viewIsVisible","handleVisible","itemIsVisible","View","ViewDisabled","handleCancel","aria-hidden","BaseItem","mouseEnter","setState","isMouseInside","mouseLeave","event","preventDefault","Error","state","id","name","previousName","isEditing","pathRedirect","Component","PathsApp","path","category","distributor","replace","ADMIN_PATH","QuestionItem","handleLoad","item","history","push","QUESTIONS_EDIT_BASE","this","isEnabled","onMouseEnter","onMouseLeave","lg","Group","withRouter","ErrorsApp","data","concat","apply","Object","values","join","QuestionConstants","type","MESSAGE_ADD_ERROR","GET_MESSAGE_TEXT","MESSAGE_UPDATE_ERROR","getAPIPath","window","location","origin","QuestionApi","GetQuestion","GetQuestions","categoryId","ToggleQuestion","DeleteQuestion","CategoryApi","DeleteCategory","GetCategory","CategoryConstants","FeatureConstants","FeatureApi","GetPagedFeatures","page","PAGE_SIZE","GetFeatures","DeleteFeature","GetFeature","LoginApi","Get","LoginConstants","UserModel","username","token","authenticate","dispatch","password","a","axios","post","Authenticate","response","userSession","localStorage","setItem","LOCAL_STORAGE","JSON","stringify","defaults","headers","common","AUTHENTICATE_ACTION_TYPE","user","actionMessageAuthentication","MESSAGE_ERROR","actionLogout","removeItem","LOGOUT_ACTION_TYPE","actionErrorAuth","error","status","UNAUTHORIZED_CODE","LAST_ERROR_ACTION_TYPE","message","MESSAGE_ACTION_TYPE","getCategory","get","GET_ACTION_TYPE","selected","console","log","GET_ALL_ACTION_TYPE","items","getCategories","GetCategories","length","saveCategory","PostCategory","actionMessageCategory","MESSAGE_ADD_OK","SAVE_ADD_ACTION_TYPE","newCategory","editCategory","put","PutCategory","MESSAGE_UPDATE_OK","SAVE_EDIT_ACTION_TYPE","editedCategory","CANCEL_EDIT_ACTION_TYPE","deleteCategory","delete","DELETE_ACTION_TYPE","actionGetCategories","BaseModel","getEmpty","isEmpty","model","FeatureModel","description","getFeatures","isPaged","Number","isInteger","list","getProductFeatures","totalItems","totalPages","features","map","f","getFeature","saveFeature","feature","PostFeature","actionMessageFeature","newFeature","editFeature","editedFeature","PutFeature","deleteFeature","actionGetFeatures","LayoutTypeModel","code","UuidUtil","QuestionRequestModel","orderNumber","isMultipleChoice","layoutTypeId","featureId","helpInfo","answers","EMPTY","QuestionModel","layoutType","exists","originalAnwers","ranges","answer","toRequest","question","QuestionAnswerRequestModel","optionId","imageUrl","minValue","maxValue","QuestionAnswerModel","questionId","option","OptionConstants","OptionApi","GetPagedOptions","GetOptions","DeleteOption","UploadFile","UploadImageConstants","actionSetErrorUploadImage","key","isError","ERROR_ACTION_TYPE","TypeLayoutEnum","OptionModel","RangeModel","uuid","toString","sortOptions","options","every","forEach","tempIndexOption","findIndex","tempAnswer","filter","getOptions","MESSAGE_OPTIONS_ACTION_TYPE","MESSAGE_OPTIONS_NOT_FOUND","getQuestions","GET_ALL_BY_CATEGORY_ACTION_TYPE","MESSAGE_LIST_ACTION_TYPE","MESSAGE_LIST_NOT_FOUND","beginList","actionGetQuestions","BEGIN_LIST_ACTION_TYPE","categories","changeCategory","actionChangeValueQuestion","actionChangeFeature","RESET_ACTION_TYPE","getDataToQuestions","actionGetLayoutTypes","toggleQuestion","TOGGLE_ACTION_TYPE","deleteQuestion","isFromList","getQuestion","initImages","actionLoadQuestion","actionAddRange","e","getLayoutTypes","isAdd","GetLayoutTypes","GET_LAYOUT_TYPES_ACTION_TYPE","layoutTypes","uploadFile","file","formData","FormData","append","Api","UPLOAD_IMAGE_ACTION_TYPE","dbPath","actionMessageQuestionDetail","actionToggleQuestion","actionDeleteQuestion","propertie","value","CHANGE_VALUE_ACTION_TYPE","RESET_ANSWERS_ACTION_TYPE","objectToQuestionRequest","RANGE","range","index","saveQuestion","PostQuestion","actionMessageQuestion","getAnswerToUpdate","newAnswers","original","find","newanswer","found","intersection","inter","originalMinusNews","newsMinusOriginal","editQuestion","r","indexAnswer","answersOriginalWithOptions","rangesOriginal","answersWithOptions","request","PutQuestion","saveOrder","oldIndex","newIndex","oldQuestions","newQuestions","arrayMove","ORDER_ACTION_TYPE","questions","requestOrder","PutQuestionOrder","firstOrder","tempAnswers","MESSAGE_LIST_ACTION_ACTION_TYPE","messageListAction","MESSAGE_ACTION_ACTION_TYPE","messageAction","ADD_RANGE_ACTION_TYPE","AlertContainer","alert","SortableItem","SortableElement","SortableList","SortableContainer","QuestionListContainer","QUESTIONS_ADD","onSortEnd","order","selectCategory","target","resetMessage","categorySelected","onChange","distance","toggle","load","connect","messageList","actionOrderQuestion","PaginationContainer","md","size","offset","previousLabel","nextLabel","breakLabel","pageCount","marginPagesDisplayed","pageRangeDisplayed","onPageChange","handlePageClick","containerClassName","subContainerClassName","activeClassName","pageClassName","breakClassName","pageLinkClassName","ListContainer","listItems","saveAdd","cancelAdd","saveEdit","parentId","updateList","handleFile","hasPagination","ProductItem","PRODUCTS_EDIT_BASE","sku","propTypes","PropTypes","object","ProductConstants","ProductApi","GetProduct","GetProducts","sortBy","pageSize","SearchProducts","search","ToggleProduct","DeleteProduct","GetProductsResume","saveOption","PostOption","actionMessageOption","newOption","editOption","editedOption","PutOption","deleteOption","actionResetOptions","actionOrderOptions","oldOptions","newOptions","ORDER_ANSWERS_ACTION_TYPE","actionOrderAnswers","ProductSortEnum","getProductsResume","processGetResponseResume","GET_ALL_RESUME_ACTION_TYPE","Math","ceil","getProducts","processGetResponse","searchProducts","toggleProduct","productId","deleteProduct","getDataToProducts","actionChangeValueProduct","getProduct","IMAGE","THUMBNAIL","thumbnailImageUrl","actionLoadProduct","property","keyImage","actionMessageProductDetail","objectToProductRequest","product","shortDescription","url","productFeatures","mapFeaturesToRequestObject","mapFeaturesToRequestObjectEdit","originalProductFeatures","pf","Set","featureOptionList","mapOptionsToRequestObject","minus","o","saveProduct","PostProduct","actionMessageProduct","editProduct","PutProduct","actionGetProducts","SET_ORDER_BY_ACTION_TYPE","actionSetSearchProduct","SET_SEARCH_ACTION_TYPE","actionToggleProduct","actionDeleteProduct","actionGetProductsResume","actionResetMessageList","ProductFilter","placeholder","handleChangeSearch","onKeyDown","handleSearchEnter","handleSearchButton","Search","handleSort","SKU","NAME","ProductListContainer","PRODUCTS_ADD","currentPage","changeSearch","searchByName","resetMessageList","resetSort","products","actionBeginListProducts","actionSearchProducts","ItemParent","continueDetails","tempid","previuos","handleChangeItem","placeholderText","string","func","CategoryItem","FEATURES_BASE","CategoryContainer","beginAdd","getCategorires","BEGIN_ADD_ACTION_TYPE","CANCEL_ADD_ACTION_TYPE","actionDeleteCategory","HeaderSaveSimple","LayoutApi","GetLayoutByCategoryId","LayoutConstants","getLayout","actionGetLayoutByCategory","getLayoutByCategory","layout","getEmptyLayout","saveLayout","PostLayout","actionMessageLayout","MESSAGE_LAYOUT_OK","MESSAGE_LAYOUT_ERROR","editLayout","PutLayout","actionChangeValueLayout","MESSAGE_LAYOUT_ERROR_IMAGE","titleResult","descriptionResult","discoverMoreResult","UploadImageContainer","itemId","files","triggerInputFile","fileInput","click","onErrorImage","setIsError","handleClose","closeImage","getErrorValue","mapErrors","mainClass","wrapperClass","Upload","showClose","aria-label","onError","imageClass","ref","accept","hidden","undefined","uploadImage","LayoutContainer","handleChange","changeInputValue","save","edit","bind","activeTab","tab","tabs","classnames","active","tabId","for","actionSaveAddLayout","actionSaveEditLayout","actionUploadLayout","NavApp","children","PreviewApi","Deploy","PreviewConstants","deployPreview","actionMessagePreview","MESSAGE_DEPLOY_OK","MESSAGE_DEPLOY_ERROR","DEPLOY_ACTION_TYPE","actionSetCategoryPreview","SET_CATEGORY_ACTION_TYPE","WizardConstants","WizardApi","GetDraft","GetNumberProductsPreview","GetNumberProductsClient","distributorId","errorData","GET_SETUP_ACTION_TYPE","getData","typeSetup","endpoint","CLIENT","checked","PREVIEW","convertCategoryToQuestion","layoutTypeCode","getCategoriesToPreview","actionGetQuestion","getNumberProductsEndpoint","getNumberProducts","GET_NUMBER_PRODUCTS_ACTION_TYPE","numberProducts","actionGetSetup","LOADING_ACTION_TYPE","GET_QUESTION_ACTION_TYPE","actionUpdateOption","isChecked","UPDATE_OPTION_ACTION_TYPE","actionResetWizardSelected","RESET_SELECTED_ACTION_TYPE","actionGetNumberProducts","HelperConstants","HelperButton","handleClick","image","Modal","setAppElement","modalIsOpen","helper","closeHelper","CLOSE_ACTION_TYPE","isOpen","onRequestClose","contentLabel","dangerouslySetInnerHTML","__html","OptionList","updateOption","OptionBase","handleCheck","previousIsChecked","OptionCard","OptionGrid","OptionIcon","addDefaultSrc","ev","NOT_FOUND","xs","OptionPlain","QuestionMessage","getLayoutSetup","typeLayout","CARD","component","styles","BOX","ICON","PLAIN","QuestionContainer","layoutSetup","PreviewSelectModal","close","reset","handleContinue","PREVIEW_ROOT","onAfterOpen","preview","wizard","currentQuestion","SELECT_CLOSE_ACTION_TYPE","NavAdmin","handlePreview","openPreviewSelect","handleLogout","logout","toggleNavbar","collapsed","light","tag","RRNavLink","to","QUESTIONS_ROOT","Logo","navbar","PRODUCTS_ROOT","CATEGORIES_ROOT","LAYOUT_ROOT","DISTRIBUTORS_ROOT","UserProfile","SELECT_OPEN_ACTION_TYPE","MasterAdmin","MasterLogin","MasterPreview","AppRoute","Layout","rest","Route","render","LoginContainer","handleSubmit","onSubmit","login","errorMessage","actionAuthenticate","ProductFeatureItem","featureCode","openOptions","updateFeature","resumeOptions","optionName","resume","featureName","OPEN_OPTIONS_ACTION_TYPE","featureSelected","actionOpenProductOptions","actionGetOptions","UPDATE_FEATURE_ACTION_TYPE","ButtonModal","confirm","confirmText","cancel","cancelText","ProductOptions","handleChangeOption","optionsStore","closeOptions","cancelOptions","flush","label","getFeatureName","optionsSelected","os","CLOSE_OPTIONS_ACTION_TYPE","optionSelected","CANCEL_OPTIONS_ACTION_TYPE","ProductFeatures","featureItems","Fragment","ButtonGroupDetail","isVisible","HeaderSave","handleGetBack","Back","ProductModel","ProductContainer","currentProduct","handleChangeInput","match","beginEdit","params","scrollTo","Redirect","mapOptions","selectedOptions","featuresFromCategory","actionChangeCategoryProduct","actionBeginEditProduct","uploadThumbnail","actionUploadThumbnailProduct","actionUploadImageProduct","actionSaveAddProduct","actionSaveEditProduct","HeaderChildAdd","FeatureItem","OPTIONS_BASE","FeatureContainer","i","actionGetCategory","actionGetFeaturesByPage","actionSaveAddFeature","actionSaveEditFeature","actionDeleteFeature","OptionItem","OptionContainer","actionGetFeature","actionGetOptionsByPage","actionSaveAddOption","optionEdited","actionSaveEditOption","actionDeleteOption","QuestionAnswerBase","QuestionAnswerIconItem","QuestionAnswerTextItem","QuestionRangeItem","changeValue","deleteRange","AnswerComponent","RichTextArea","editor","useRef","config","readonly","toolbarSticky","buttons","tabIndex","onBlur","newContent","changeType","changeFeature","handleChangeInputEditor","handleChangeRadio","isValidQuestion","handleAddRange","addNewRange","resetOptions","inline","changeRangeValue","changeAnswer","getTypeLayout","messageOptions","getAnswers","questionAnswers","hasOptions","getTempImage","tempImage","actionChangeCategory","actionBeginEditQuestion","CHANGE_ANSWER_ACTION_TYPE","actionChangeAnswer","actionSaveAddQuestion","actionSaveEditQuestion","actionUploadImageQuestion","rangeId","field","rangeKey","CHANGE_VALUE_RANGE_ACTION_TYPE","actionChangeRangeValue","DELETE_RANGE_ACTION_TYPE","actionDeleteRange","StartOverConstants","actionCloseStartOver","startover","Reset","onProceed","ResultApi","GetAllProducts","call","ResultConstants","getQuestionForResult","questionChecked","q","m","onceResult","CancelToken","source","cancelToken","getResult","method","Result","ResultDraft","MESSAGE_RESULT_ACTION_TYPE","MESSAGE_RESULT_NOT_FOUND","isCancel","getAllProducts","GET_ALL_PRODUCTS_ACTION_TYPE","actionResetResult","WizardSetup","handleNext","previous","current","max","progress","textNext","getNextButtonText","WIZARD_PATH","WIZARD_RESULT_ROOT","handleBack","back","questionData","handleRestart","closeStartOver","WIZARD_HOME_ROOT","handleReset","openStartOver","handleSeeResults","lastIndex","prevProps","showHelper","Info","openHelper","showReset","loadingResult","singleColor","result","isNoResult","disabled","isDisabled","stepIsDisabled","resultData","indexCurrent","isNoResultMessage","questionsData","showNoResult","isVisibleHelper","show","isVisibleReset","loading","distributorClient","OPEN_ACTION_TYPE","actionGetResult","indexBack","BACK_ACTION_TYPE","actionBackWizard","PreviewContainer","handleDeploy","deploy","getSetup","resetCategorySelected","resetResults","loadingWizard","MESSAGE_NO_QUESTIONS_ERROR","actionDeployPreview","HomeSetup","HomeConstants","HomeApi","GetLayout","actionGetWizardLayout","DistributorClientApi","GetDistributor","DistributorClientConstants","DistributorClientModel","layoutUrl","DistributorClienUtils","DEFAULT","REDIRECT","getDistributor","callback","distributorData","isDefault","actionGetDistributorByToken","DistributorNotFound","HomeContainer","handleGetStarted","WIZARD_STEPS_ROOT","notFound","resetWizard","resetResult","continueDistributor","home","NavClient","MasterClient","StepsContainer","continueQuestions","ResultItem","handleLearn","open","ResultList","ResultContainer","handleBackWizard","getLayoutUrl","shouldReset","continueResult","href","rel","actionGetAllProductsResult","IsAuthenticated","isAuthenticated","LOGIN_ROOT","BrowserUtil","document","documentMode","InternetExplorerContainer","HOME","DistributorItem","DISTRIBUTORS_EDIT_BASE","DistributorConstants","DistributorApi","GetDistributors","PAGE_LIST_SIZE","ToggleDistributor","DeleteDistributor","DistributorRequestModel","isRegion","productsDistributor","productDomain","ProductDistributorRequestModel","productName","getDistributors","deleteDistributor","objectToDistributorRequest","mapSaveProductToRequestObject","mapEditProductToRequestObject","pd","saveDistributor","PostDistributor","actionMessageDistributor","actionMessageDistributorDetail","actionLoadDistributor","editDistributor","PutDistributor","toggleDistributor","categoryName","productSku","actionGetDistributors","actionToggleDistributor","actionDeleteDistributor","actionChangeValueDistributor","DistributorListContainer","DISTRIBUTORS_ADD","distributors","ProductDistributorItem","openSelected","removeProduct","OPEN_SELECTED_ACTION_TYPE","actionOpenProductSelected","REMOVE_PRODUCT_ACTION_TYPE","actionRemoveProductDistributor","ProductsDistributor","productsItems","ProductSelectItem","ProductSelectList","ProductSelectorModal","handleChangeSelectAll","changeSelectAll","selectedAll","productsComplete","getProductsToList","productsSelected","pageNumber","slice","p","ps","changeValueSelectAll","updateProducts","modalSelectIsOpen","productsTemp","CLOSE_SELECT_ACTION_TYPE","UPDATE_PRODUCTS_ACTION_TYPE","actionUpdateProductsDistributor","CONFIRM_PRODUCTS_ACTION_TYPE","flag","SELECT_ALL_PRODUCTS_ACTION_TYPE","actionSelectAllProductsDistributor","CHANGE_VALUE_SELECT_ALL_ACTION_TYPE","actionChangeValueSelectAll","ProductSelectedModal","saveChanges","modalSelectedIsOpen","productSelected","CLOSE_SELECTED_ACTION_TYPE","CHANGE_VALUE_PRODUCT_ACTION_TYPE","actionChangeValueProductDistributor","UPDATE_PRODUCT_SELECTED_ACTION_TYPE","DistributorContainer","isValidProductDistributor","resetInvalidProducts","currentDistributor","setMessage","openSelect","existsSelected","generateToken","uuidv4","urlWizard","distributorToken","invalids","setInvalidsProducts","readOnly","c","toLowerCase","MESSAGE_PRODUCTSDISTRIBUTOR_NOT_SELECTED","OPEN_SELECT_ACTION_TYPE","actionOpenProductsSelect","actionBeginAddDistributor","actionSaveAddDistributor","actionBeginEditDistributor","actionSaveEditDistributor","SET_INVALIDS_PRODUCTS","actionSetInvalidsProductsDistributor","RESET_INVALIDS_PRODUCTS","App","getSession","ISIE","Switch","UnauthenticatedRoute","exact","AuthenticatedRoute","PRODUCTS_EDIT","QUESTIONS_EDIT","DISTRIBUTORS_EDIT","FEATURES_ROOT","OPTIONS_ROOT","session","parse","getItem","isValidSession","actionGetSession","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","initialState","setCategorySaved","removeCategory","setCategoryEdited","setCategoryDeleted","CategoryReducer","action","setFeatureSaved","removeFeature","setFeatureEdited","setFeatureDeleted","FeatureReducer","setOptionSaved","removeOption","setOptionEdited","setOptionDeleted","OptionReducer","HelperReducer","updateData","backData","WizardReducer","updatedOptions","updatedData","StartOverReducer","setQuestionDeleted","setQuestionToggle","updateAnswers","answerUpdated","updateImage","updateTempAnswers","updateOrderAnswers","orderAnswer","addRange","updateRanges","QuestionAdminReducer","tempOptions","setProductToggle","setProductDeleted","updateProductFeatureOptions","updateProductFeatures","ProductAdminReducer","LayoutModel","LayoutAdminReducer","ResultReducer","PreviewReducer","lastError","LoginReducer","time","Date","HomeReducer","UploadImageReducer","setDistributorToggle","setDistributorDeleted","updateProductsDistributor","updateProductSelected","removeProductDistributor","replaceUrl","productUrl","URL","confirmProductsDistributor","urlProductDomain","fixProductDomain","substring","pt","setAllProducts","isSelected","setInvalids","invalid","resetInvalids","DistributorAdminReducer","newProductsTemp","DistributorClientReducer","rootReducer","combineReducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","indexOf","createStore","applyMiddleware","thunk","rootElement","getElementById","createBrowserHistory","basename","process","ReactDOM","BrowserRouter","addEventListener","fetch","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.7ead5cff.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQCAYAAAAiYZ4HAAAAAXNSR0IArs4c6QAAANpJREFUKBVjZEACxdptWn9//w9DEmJgZmVc1Xu16hpMjDFfrb2PgeG/DEjg/38GByApCpOE0IyvGRkZDkDZT1j+///vDlSkhaoImfdfFGhQKFTkGiOIAXIKshJcbJDTWECSv3/9v4pLEZo4I1gDRJDxGhPj/9VoCsDcf/8ZgU6COBuuAeixqxNuVTdg05Cv1qYF9AfY2UzYFOATG5Ea4MEKTEh8uGL8z6//fLCQA2sApo9z/xkY3PHGOCPjWZAmiA3sDF5MPxljGRj/88BMQqH/M375z/Z/MUgMAG9SQk73LQORAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAANCAYAAABLjFUnAAAAAXNSR0IArs4c6QAAAlFJREFUKBVtU0toU1EQnbnJa5q2gkkRtBsF23wotUr8kJ0FpfgB0UXduHHhRjFJiy1pK/oQTKKUlARciFSw4sZfQUVdiiDYhQtBqHlpqQs3kmKlmAaTvDvOS3rDa+jdzJtzznzuzH0IW5xIIBlCokskIYBIPgDsAKI8IOYJ4J23K/xE/zBQbQ5FOzDiS/WbIBNEdNKOb/G9hOi4lTHis3ZOKCcavH2cE31SiRCwhIiT4BAHXS6t2yHgPCLkNvR7icxHUV8yzfpGQ7Vkw/7UGTDhDRPtlpiTFMlJhzPGRAIdWChXKu3hfT0vRKf7ACf8qBogksMxf/KB8jHel/Ss/+N5EHU2QISRjDE5HfUlklwgXsMRv4g29zFnqeqpUNkgAqfSA4pzWWN8TpTKpNsTWQKhidexnjvBRiILJArJ0vq1qdzoMve+YEHqINBU9kTWJYBgQIHKtrRiQWK1S/nKokSFFRRWs0R7fiz/3S0E4tgmgp1yUe73atvnuYOfdo5H/dwaOF+xz47zkGfS3ycMMZ0bf8+be2UnpQn6zW+Xiy6X8yjjD3noc1z0bNaYeBvzp67wnXcoPXO/tVbtuuXX1qqH7retrq285Ac5aBPNejzbrurzkTWFRfyJiyjhHgG568H4y4FiMG3Ev9b9DaXe+7RltbI0w+u+oIK56goQfuZr/AGQIb5esMEB5MmpncoujOVtmPqsW36Ih3hzN7j66c1M3eORLJKAhHdX+HHzL9V4vc2Bo713d1ZMMyAl+HjlHTz8RSeBcaS/Oz/0bMhs1lv+f3/45UIIvExhAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAANCAYAAABLjFUnAAAAAXNSR0IArs4c6QAAAh9JREFUKBVtUz1vE0EQnb3bvQ/77PiD2HIPDSAklCKiC7+AAtFTJQWiME0EjdddRBGokNxTQNoUtJGQoHEaEAU/IASwLzg++77vlhtLeyxJtrjdezPz7s27WQJXLH6LGzMGFV0HGoRAjZyRzCIpjeNszYJwMB4EhBBxsZSowGhjxL4s3ToRsaniF886Y1nTTDx+zH01VpI93uJW4xdrpnlSYhWwvQoNIliH/Dyqs9wL6lmS6JKg6ljLvfHuXKrUMNC/t287p9CSRFRjInZ6k5ffdz0k+uH1yP6nfvj664vfpgOxJFsuwmr/7nBNvhPOuTZ7z7qSCAM5hfmbb3zxdJPXxQwcxEjFSNoPYheOQJueQgcxuVir/ufV52eBFhxaNZUIEzrrEG4X/kkixIQfM/cDOPyIp5YJKWJyYftCCKJlSXjZ7C3IzU60skAW4J765sovEUKu4ujj8P5Q15wWzNUAnt23LdbePEuKdv8r6rajYKWAAVVrqA0+KtaKRyiIEalBQzurDQYDUbQ7zQwzYBRC9AVzn9weVoMUStX4s05u3PSwfjUG+BMm74ymOl9I0n0YnRexUh3f4JXpAhryw3ah/LrVc3eOd5KSDA8o//mdvcYijmw12c+MpMZInpKIhdG/9laDey1xsT2ZXw6oBPAqTTKjpqqUMdzl9F91pS6RycKDRwf6x8VPap5E1M+WpPAvLYY3G423UznxMlfufwFTkfT5bundkQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAAXNSR0IArs4c6QAAAv1JREFUOBGdVF1IVEEUPmf2aplh7vYQahEqW25FhdGDkKEPBf1gFGVPQZoVESy7ElRG5Is/vWgKRmIJgg9ivfRHQRhSSRFGRRjsZooPYoUatFbr7t2ZvrnYirqZ64F7z5kz53xz5pszwxRDGvc0LhkY+HlYKlXEinIVqXRikrBHoHsEcWu9v+J5jFTLZcye8KyrPva5P1CliNboOWgI4JTCj5xwOCXRXjhXWVMxflHQ5m3NCR8DY02o7uRU3CsWfJOZu1zJjuGRoJ2/m4OZimQhKx6KgRV1RUH7AqPXUUUZQAIo61Sj/1JHNGra8MHUnyVuV9UminA3drHyr4+YH1ugHmfNcamkBWgjkV/nv/A+GjSfIXn7NKBmR00yUdDw5tUlRcaCVZo8Ziqt8y0QcO5i0iaM/Hrf+V6hRiePYrV0AL645qu4Mzd2AR6mCVRpk8ps0dFCsSzShmJu1ToeAVXjOp5JtDDxV6VoqzenZreAa4ueSKSEbq3jkbzNWQ8E2fbb7cmVSlCdzo1IecQAl2l6sNxYO6x1PFJ8uziC+Ic6p9x19ZkpTVi8Q6B9wto5YRtK1XqxkmhIq9Vw+hkCB2RVGAmFXYsF1Hm5Odk/UCVqJMNAJ+k77Ioo3on2ei3Hg7uEY+mT+pflv+NZpNc3CBoVzotHcFDUqZNZSY8cC3qVVHfVWPBMPIA6NhSMFE7lvBO4jl2goBft4EDV5/QE9PS1m4r8n0J+qY7Bu3BfVwqLTgA4hEtgt8Zx/rzraw+AzAJgjKSmODqF21ndTpLeYqXEOLGscO+G2o1SyjZrwHy58s3pXzh9hTNi9Jv1KRAdxvZ7FrKAx1l9SIZlD6pcAaC2Bl/FLZ2Htvq3uNfVHMSDn2UzxFMjIvqXGZmTE+ZQRojCBSC+BHTl62xm0Z6dnVzmfuSe1OPoe6oHswWATaAlzQxLMsFRMPRpRgj655sSfKXBd/EG+aen5gVFhftMU5VgOwWgZDUqS8Ij/kUp9UGwuJeakNJR2XcWL9RM+QOyhShlHbVmMgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAg5JREFUOBGtlbFLHEEUxufNLogHaqWgaOdFLRIigoKgWNhYCKL/gVZpNFcY9SrTnKcIpzZW+h8IgQg2FkIgICiCFsZopyhcKg3cNe4+3zfn6O6yB4fewtzOzH7fb2f2zXtHqsy10J1pLBZo1Ge/j5haIGPiW036sDbBP5dO0v/irBSd/NqVa/a9wqK4pwThkKI8k7qGjli1seIm6Xky2NJOYnHtPHUXZISAM8nsoGh3mKlOHmxqR2/n/syfBQ2pzuxH3/MnWakvRPxfKxrP/U3/spoXYOpDZsBXvC+wK+W6Yxvn3y6tKO4+3bWSVI+PPwTaLtBhCzVAbJO9wqnA8rX1un/5eP4+DhKdm+vJNhQf/N8CbSIn8Qnb1xCxV/yObWJlcbCZjqU5tCjQaMUDr/nuItCIJrOaxDcrt032eQQtCsQYHngRRLA0jgaiiQDEGSqZK3nZAUubcyZHIxrNSkBWAy+OF1guDq09Z1aA7xXcomzpM55NJzMHuOMiTXvrFwvLpRF++QYsE5TXyff3XKSTkHuDqOc3v7zdrmzjMj0U1IX71CqsI43cRDohA8KCykfwggGWdmvcXeQm0qlyRFhZ8pKHoqFXT2fzRGobuWnSKaw1IwQALeaRggdeFAtUIAmgUlVPPVOC2JlAoiM3y600uEJonvO4XfJiwpYxs0IrrGr5stCqFlgLxf2tfwFPy7M53VUFlDIAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAApVJREFUOBGVkt9LFFEUx8+5M7sbhMSIPbT+KMj1Z/lYRKW7VtZTSfjjH4jsIVIzNrSHFgJXs7USynqIUskHfcm3HipXKIjIWmP9tau9RIEE+pY7uzNzOnfCUHH9cWDm3jnzPZ/7vedehB2Gv6wzR182HwFQOSBOIqlXH8T9EdwJp6koeMCyrDAAxgVBr4VQzYBqBcTJbYNaiu/tT5n6GBLkkiKO9My0jksTjQXBAQArT2zHkYQYZjLMkM/s5ila1uvmoo7DshaRRngo2dJRY2lHHqSsMRZ/0dzH6m+Pes2mgvbHgFCjqKLKTFEnIf3ZFHT9UCjXSCbGWBQpyciqbxhvSEkXRITcr16y4BIC/VJcu46n3ZqEmEk9zHXfVkMkaLhuWADBHgkRKLzd0ZYfG4LkERt6YpTF0dKMrNoVJxIyVDukfJiYGyCCE06Xw3c/1vpd5lX5Wh0Sklg2wpyb0pz5DKmztyM1NiQy1w9I5S6Xo6Ir6p+XeRlrHDUXdGfzZRtFwOlMp6cmMFmX/CcDCARIvI/M9TGkQjiEdzVEav4321/Y6dYtdoIQ0xyei+shS4MdfQRUCYrq7Zn2x1cWWBlt0I2yrt2p5eRXQpzPdORfWA9ZHAy+4IJT6SASZvcomTCqeO7hUzCWMK7xfEH+lNtZGmx/zqudVgR6uzdwInUybEeNhe1P+IT28pPBPcgBJ/i0mrbfDHnGmrOAqu/h7M1ZuyLNy242XzB2JEa07H3nCfAn6fhu8WWwn+fnVMDKrSCSjdeK73rASMUUFAe5sNACs5qdXeaTW1ARvKFY20waE2vSKprmGc5YJtEUDzoivGX+FXDRq1D0lt2rNRVpPlS+4p8IrDu8tTea++jHQNhnpNFumv4LWRkQHyflNg8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAKCAMAAACzB5/1AAAAb1BMVEUAAABmGoB0Lot2J4ltJIBwIIBxK4BoI4BvIYVrKIZxJIJwJYVwJIVuI4RsJ4ZvJoRtJoZvJYRtJIZtJIduI4dwJoZvJIZuJYVtJYZuJYVvJIVuJYVtJYZuJYVuJYVuJYVuJYVuJYVuJYVuJYX///8Pb2BxAAAAI3RSTlMACgsNDhASFhcmKzAyOjs8PT4/RkhQY3u/ysvT1PHy8/T29wnKVT4AAAABYktHRCS0BvmZAAAAUklEQVQIHQXBCQKBUAAFwBHJnl3lK3r3v6MZANheAeD4yQ6A05iy5HEA7ZiyYZ/fDecppcFiyHx3mVIaUA+ZX9+8G0DVJelrAFWXvgbA6rkG/AF1hwUznpaaRwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAAAXNSR0IArs4c6QAAApdJREFUOBGlU01oU0EQnnn5o3gx4kEj1ItEjQgejFgFRRFEPKoVBJEiHsRDalNam6I8DzYRrVoQRXsoFbykNy8iGA0FRfEgaZXSSiGooBRDT0Zt8nacec2+PGOIqd1DZjI73/d2d74PoWalj6U9L3KzRwHoCG9FiWgNIhSBIE8ITxC9o0PTvdM1MOcvOhknXZtSu8qWGmayCCDOcxwHwM8ItIIAIkAY5TaFSPeCoVDczHb8dOMldwhj4eRx7n1AgN+4nlgVantoZveV3YD45uvrLWvhsiI6hYhvWgJ4MDXZxx+uLptQTmYp6zlf653f7zt87X3P12rL31lneOCkIhhh8LPd2zYcah9rt3SXR94s/6XwmK+oAn7f3n+RCfBVITOxc/X+7/wMZz/NzX98Xci81YRGZQARLiSaIdPA4InETb72JCi4xINzns6wp8kDkDfTzc1E00RFiHcIqLVzY2q7xjAh8ORovHYAuqFhNDyZyr5M316G6EykoQtLiZ6VXhuHpJhjcRkiWtGZLiwlGgVl4/jqRY0zbAeIaP9jlals4/gd8xpuiJ3EASJaXWw2Eiq2KFo+CDzVGL6yd5T/KHGALjYTY1tSrUB0hm34aHCmW9xlL0OMziK6L3YSB+iNRvF8240WKlljfDrm8/a7e0U2EFy3tku8KXaKha/ETZPsurtR53Iyq/Ajy2+/Aw04d+tD75Tek+go/MLWZLD4i9J8jQNMPsGTuwusM5GGTFMGYL8ZX5NhAdYutxmDQzN93XUJpSi+fpmb7WBtXhQHuBslZ4kt8M+ID3xXS1Tq577TtaTOCd1g8WbFTlERLaExR6CmeJo5PYDFnuRwLWldQjd5o7we6bII5WN/kmJq2YRV0oHbPKc9vwE0bSye/CQMugAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAABTBJREFUWAnNWU9onEUUn/dtMFnBSjfpwVjxIFmLeBB6KCLYgOitVhApXhpoRG9NTIkmQexGNKmUxqTQg6KB9qJFe2hz8h9UUSSHYg8eaoKH0pgekqy2gpuI+z3fb2bf7Pd9m+bL2mSTgd15M+/Ne7+dP+/NmyVzF6VQ4KB4/uQjGf63ncvUzhS2Qx1xME8Zni9T03zuUP9vhQKF/9cM1Tvw9SfHsmFx+VkO+aBAOWAM71pbBy2IzBQFdDHItXz9wU99pbXl49x1AwQwXlrpZeY32fD9cTXra5GhW0T0PrU2j68XaCpAAUS9e0aPGOZhZvNgDRSiecNmlsjMy4zKB4XbRbbdkOmQcXbZXb/7FtnfDdHx8WuDkwKYo7wkvSbAwt4P7/3j9uI50fBibCDRTMB8PswEF09fG7wS4yUaR/eM7g3K4cGQ6JCAzcfZ9EVuR2tX4cprf8f7q607Aux7/NRD5X+WL8lMPBERnzOBeTv38uDZeje+PVCfjnaZ0LwjM7xbdcpsXs3c0/L82C/HbmhftF4VYAXctIB7wAsTjWVaW95a797x4xIE9nJ5afldmc0+ZQnImwJy32ogawDaZf1r8cfqzNEKUfDqxMzAOVW4EXVP/sRh5vAjmc1m6MNM7ryv7ankcgdRYzgQds/5ZRVwJnhuo8HBJnRCt0BbQRsT4mxzbNIyYGr587PmbhEc0DZRpntiduCStje6ni5+c31f2zPYey9UdD/25Zkfbkwvffuz2vJorQNeKs0KQOdKZM+dnhk6poJptXPgpWHIBbns8Xr26tH8yCndk3BBQWu2Q8f7JXZOWP0czeFApIGK8nmpdIRD028/Qkd5abSzRXOQwwQBi46xAG2UkAihnXAl+gt8XzoRDXlROnWktSU2VRDRCpjQtgBtbNXwJU4Yfk6FG1Vbm2Ib9hBKgQm0BegCP5rSIRGiXifsRt7dN2zCtmpRTAE8vLuVOBbClwo1uo7bpgPAZu9zMqluz0jgT4utmwna2sblwxbehbtmgMumNyq3Ek9vFRHBAGxNuAljW6KID6qgr0VnT7pzH6ue0JCpU/WA7s2/V6jVYnsWqDU7eScvAQziamwBtiZ7Tfc3Mp3eWtVhsYT7YH8tR3u8Eung/SGb/cpJ1lQsPSx9byT7XRsYnC5gs6dYBeV4+8iifY2uoxjkBs5NSHBYLmkogq56vUogQ/iSaHE9NEFbgmWbxNwpyjvREMWXmegy6GQJTLhIuexksl/bwODXgulmE7IvU3ZsWcLqgdERlbqyZ84kun1T9pxgNJ3okFv8dxMzQ8OeWQcRxQBsAVJDPx45xFaXCAZgC5C3ym+W1FCKJDjIIbYKo7XtkyxaADaJJEiqeUpBIcFRutF13DZP2fAHEEiqFQyyLxf+tKcxNWzazK9iTjFZN4OMH0m15UlqWET21eBibVbSUmABJkCwAHFCkfF7TJIa6n3M96UTbh87uSidOtLasumoEwUWjTTeUeM5AtdtJ8K7bWqYqroqgPBFgTlpP0JXOemUs+VyZWAAFh0Vixw9j450yz3sY8+kTNdmZHSqH7VLP8tntU/23isTvw594ttKoLbvMPmRz8WTV546Kmnn7MD3UbmNons6TjwtUewrsexyY2MujM8MvRR9r/FLDKNg7NzRdlim+aoDwc1QgF+5UaBUj525KDgk7tZ2/DEptsQ6eFs/fSRAbs/HIwW52c9vsnwXsKzJ9xi1j3rVJY4KbOsHzChQd+Xfhk/AUZCgAXRbPqIngaKNAL/Zf0P8Byy0wBcvceZmAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAA49JREFUSA29Vk1IVFEUvuc9xzIwzIEWEwhROOEQLYpQ3KRQLYyiQhdB7UpSsCYCm6GFQmniQnNhtIna9gdFEiSIBBZFrcLQyhYuXEgiZGQ6vnc6331zx+c0bzLKHtx3zz33nO97d+75GVK/ec5Fu6KsnCOK1X4xLVOKI54LTck8qUgNkrIfXR9vHc8HRUGb8WjXHpedLmauDbLx64loyCK7tWe89Y1fb+RfiG7uvhl6P/ell5nOyteLP82J8QAxPWbLHS3gdTiJWqKFCLlWjIkPy7JOPqhYKWI5YX+sOBxvfNuYgp15VhBd2tm5af4HP2TF+4jUovD0b7DVlc6x5IxxyDUndnSEvzvqsvA0MatCUjRctJ6OXXuXmDX2GSJ9kq8zzzSJommy1LHe8eSIMVzNfD7aUc2uwoduBlnFxvABczLLAOifCycRkpAVqvxTEuDAB77AwAePzs30GHx9Ily84zqviTgld1IbRBKPdW53UlwNZztEIz2jiU8GyD/rkzEPyT2HbMveiwDRJ0J04eJxJ0EkLeVXO5xFHlPMtzEgQ+cnMLLGECxgethKWTpPJIQRXbh4Y+yfW8o7z0geJTwd3ZfokiGP6PSet7HiDSxgIj3AYelk9EwGgqOL4zCxFJ3s+5isx4DsuXl7nrz8TmMNQAMOK53xEpn0eNlsWbpbf9eW1TbJj28lWyrvmZ2Swm0PkDfEXI6INXr/nMGUqoI7krIirJKMfiMjN9xrcEQ+Lec51TZcs2T0s4ufK3EHktLTJoTNnpl9mGUFYqxrl8l4Y+Sf+z4k75h1vOJazF1yj7NyW+TXkIOqW2YvewZmSi2ImiOZPMo2yrWWiyV3yXkuc7tEXliqx1MrvD5nAGX7C5Guwrp2ZW9mr9trhm0pMaXQW0RHN51IHup5eWE+286sUQ89maZwokksUCA95ereJZGqJ21t5Oaz9mFOSpSqQRinq3A+P5UOhgkxmvAHRpBTBlM4LDSttGEdqnCQk9EXFhXuwjDroDmNVYd9cFjojJLBUpe4WJf6IE/Rx+tfFKVKq15hQM5jqoAFTGCDQ0cdOqPwStPiJhTEIICCGY6IcwwDcpCdLqqkmoHpYaOqyIPqKpX7BpoW+snFaPfWXCDdQ9UTtm0dxICcywa+wJDwD8lv1m9au24TcFjrxpchAtnftnJpNM04Sd5WDiI8/+XPiUflvdf875afDPK/+gP5E2cY7S0N1yFgAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD8AAAA/CAYAAABXXxDfAAAAAXNSR0IArs4c6QAACgBJREFUaAXdWwtsVMcVnfve+gPFKXYxv6ZKGvBiML+EooRPkpJClUKaKmljWpIg0UqNKpB/4WObRlpU4TUm4E8bUiKlaSpBCBSppa0gkaJQRApphAhODWsHKKmS8BHGgG382X3v9syS3b7dN2/9Y8m+Pmn9Zu69M3PP3Jl75/NMIklP+TR/dk8vPWSyeR+a8ApmLwsaTYJHCBIjBIsOJrqE/CUh6BL4l0ijZjbFkez0icd9TYW9SVItWi1FU7cgsWZqzYSeoLFMmPwEQM1gIbRBVnsDiu0noe2lURl/qj1S1jXIehIWGzJ4n4+1tl3VT7BplsGacxO2NhgmiU/SBD26paUyMJjiicoM1jLhOksm+Z++stN/ig3zj0kBLlthcVdQiG2JQAyW5xlMwZK8mplMwV+bpjl/MOUHXoZnD7xM3yUGBF4O8as7qitMEdoAi+h9V2+XIBLSkXXA+WXByaXZJRQUpo8V1CGT+g2+eOrGMRjib2AcLuhvq0R0Fp20D179UFoaN2fljjvrO7iiO1JeRoRgD48xNTHGYJ5JJi1EJHiYmbMiMnjf0HQqs+RvWbJfDq9ock2eMIJvAcg3+2oZgBtJ0C7y0L7ak+VNfcnH833fftdz9fyR+00h5qEePOLNukDFuXi5W5HvE3xRvn+WMHg/LJ6bsEGiFp34ha2Byj3QGFEu9Z+E4Mvyq7yGye8xi1FOUGCZz7BI2ZA9fs5rvoMLQk5yyaCXFmzNMYM99YLNx9DbI/vTBkbTRQyondnjx1Y6zvmSybXjDKPrrUTAAfrtYRn04+qPKtpES3+avrUyZm/36yz4sYHUCvkxcLSlbZ9fUK/Adj+1WzeNrjfheO52qpg0sXn+zImLw8CdhJJI993fcAesvWTQTTAvU1r+cOPHMpQ96FBxNzzyivrm9bvqmx0kbgP5WkfnaPihhNM2kRrouKBthVc2edMDZIoKp4Kki581tKzf5cR3C10jfjUGvFzEhELGNvRKDD0CCF68qj6wfmck74Y3dO6Eg7tg+Z0QGq2bOyPvVzHD/uob/ucwlO5VgiLx57rmil/WU6WSnapE+K0LOXeMmu479twNq44NmLJRC/sKdqebplAjI/HvnLSRz7glfltBIj3hSntrdRwtnI2CbwudfhZWv1MpRNoLvqaVHSqeK2gsVpXmVz0cr2sUvDBFaTwznCc6URsod9U8t+NgwmLttdXTN3/FyguDL5lccx+Cf4GVEUlrQqtw13CnnojuMW/sS4JdwRgDh8GzYTwTI/i/zNG6lnKs693zYFvxAZbchxw0XtXwvYaMCO/msGf+foRgfWtEe6x5t6Q1TV+FDrDtM+TS9szZjqihtbXTN90J4kQVMFP3/EVFTwWarnuuO+hxDT7qI8R15dEXTofLEP7CK0Ott8e0ecFwpUSBhlNrk3KC4qD0gMgvNq65BOt+aCvE9LakZWTom7HxMmx8wVNKplQtlHQNx8zT7QIoRpyyVo/o60mjp9EBpyJ5OOZX582c+JLM1zSu+xTm/VuEZ31TSFsi8x4MAFwoWFk30zgzP2GnphZlS1PlSQzhgrXTNt8TYk9bbVPZlXrL1hrYtgPb4/FaM/EjkuYBMy+e+UX+vAM9pchfhOEzKqVyllUcwLljG/bv2VY+ziimVtxblasJ4hwrI5o2NVeAj+qrSPh8OBIV/A87i+lGJz2CUEcj7EwhMjPNCyq6+2h0WKkz8VyA52F2Jhlf1gmNXZchUlhTWB6oTTFeLnKu2qtnvXTOVkWn2CVTnUI6/8dBx1wN8R5XxPaH2tnxxNYunbqUdNZaVdohlI/WEAuV4IXZ+38BvqZ5XTvWAr3xHSC/FdAQC5XgDYO/EV/ArXkA7YzXHVHgq7A84dJB9fB8FdVtNHn9hbWM4kKDunCIycpQAG/4oNuAqvS99vnxMfDttiNuLGrbtcxMehcc3AvGPUSzfLO2D4+jui9LwXEqpXGbeEWT8RxXyMdtArg7b+u4/GQ8XYbA0vzqaa7pGGIleFy8nJZxXmgs3okHKfMY+iut9KJJVSuMy12XDcNovHL9cmvJpKpfWPmpmJb3/iq9YPmWMHhsbPepBEB7QJ7vSd7z3qp8+IdXkIxMhUw2+TfFXv9syU/VBzorT6lwcdEYBl/XXPkedkcfqACwEVor6QaJBdgNeawycBqIFmZ4b2ylp0p6TUHNWOj8LZU+xBkHb1oeXLj9F1VC2C8vLfJu/A5i5R0qvmBNEUaUkred2BsKwTB2T4/wfrq2peyzKPg50/P2wvrnVBpifryMPXH01FMlk4o0+KxCpV5E4VOqKPjCPYUGFgO1KmEM7zz8Ut65WXUvy6+eC6t/10qLpFkTO2Q6Cl5m8M3rb3F4pz6+Yh4rZdzyhExTeT8nz/waAhXHJI4Y8PJjX+x2lqs2Am4BLfUs8lYtxjR1WKFSdHTHgJcF8cVFI053Nsi0Gx95I4MVq5PVz0+YMOIPEVw28JIxb8bETXB+70eE3PQ+c6b9FUSoaSqd4bj9RfuLond54bhd5PX/HM6hFNu8exDS6PCJ08jGTglVZalGK8mrWm0yL1fphfD2r5Ffn/OysFzDeLBCW8psbpcF4NGjf8NJF/0pneR/FB9Cb1KrTKzpYlX8d4IY9uaz6gLuoZbkVS+BxXfLFadKa0zhutpA5d/jeTjDU2xn46US5HH78aUecZd4/RUsjH2Y51lKNYmOZadNKFfxPLiG/h16Tb34V5WIpXWz7tkbS7o9Obmlbmtvhe7mUqcW5aemaZT2lNP/6+hHW98JzMlddBpD5i74umGoKIi9bhBDJYjCBvIG4r6JH0TgLyGENGjUpOvaT+sD5coNkZNCQ6XDwnR9V3phV3fXHlytP+RYH4kOzZO2aGtgbfQiM14WIdE9T/HkjYvYID8WMLMSaQ3DdKJjfoCPJZXnFJGySQNf6vUvxGZhufSo8CtHPJ70A1tOrf4k0nB/3/I/tnp7g49jyP0IYw/r9T4eolZd6ItrW9b9sw9JDPAkPMXe6uXMxuu2qvHBAybOAcyco9hpnsc++iINS79Y92Hp1ZKZtSP1YNf4YJDHYVqNA9CpGOHwRTzFVo8jgU6Spj9Z37yu2VHEwkgO+LyNLbCU09W3pfmbSShhQl4ZpmzCDgR02O+zs0atjP/S0kE8TI45mUkkOBAeDkRHYV72u8hQgGN+n8P4La5vrnQ6inPUY0i97VirEH9NwLslLESiazhD26B9LXPKYIBLJZJi+eEZVNzVwzkwfhLO9+hTDPGXsrNHbPO9X3R9KD2ZlDkfUej5gqopRpAL4bh+iNAzNUIf6Btgz6Mj92uatmPkT8oPyi8uBlqHSj6p4K0Nym9gOjsJ93/mbHj6PMxT6RBzoUAWgA0HwG54+A6so+T3AmexFWnB0rlJkH6ov97b2l5/0v8FD2JuLr8j+e8AAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/browser.129b18c8.png\";","import React from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport './ButtonAdd.css';\r\nimport Plus from '../../images/c-add.png';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ButtonAdd = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nButtonAdd.propTypes = {\r\n text: PropTypes.string,\r\n handleAdd: PropTypes.func\r\n};\r\n\r\nexport default ButtonAdd;","import React from 'react';\r\nimport ButtonAdd from '../buttons/ButtonAdd';\r\nimport { Container, Row, Col } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst HeaderAdd = (props) => {\r\n return (\r\n \r\n \r\n \r\n

{props.title}

\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nHeaderAdd.propTypes = {\r\n title: PropTypes.string,\r\n addText: PropTypes.string,\r\n handleAdd: PropTypes.func\r\n};\r\n\r\nexport default HeaderAdd;\r\n","import React from 'react';\r\nimport { Col, Button } from 'reactstrap';\r\nimport Pencil from '../../images/edit.png';\r\nimport Trash from '../../images/twotone-delete-24px.png';\r\nimport View from '../../images/View.png';\r\nimport ViewDisabled from '../../images/View_disabled.png';\r\nimport Check from '../../images/check.png';\r\nimport './ButtonGroup.css';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ButtonGroup = (props) => {\r\n return (\r\n \r\n {props.handleSave ? : null}\r\n {props.handleEdit ? : null}\r\n {props.handleDelete ? : null}\r\n {props.viewIsVisible ? : null}\r\n {props.handleCancel ? : null}\r\n \r\n );\r\n};\r\n\r\nButtonGroup.propTypes = {\r\n handleSave: PropTypes.func,\r\n handleEdit: PropTypes.func,\r\n handleDelete: PropTypes.func,\r\n handleVisible: PropTypes.func,\r\n handleCancel: PropTypes.func,\r\n viewIsVisible: PropTypes.bool,\r\n itemIsVisible: PropTypes.bool\r\n};\r\n\r\nexport default ButtonGroup;","import { Component } from 'react';\r\n\r\nclass BaseItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isMouseInside: false,\r\n id: '',\r\n name: '',\r\n previousName: '',\r\n isEditing: false,\r\n pathRedirect: '',\r\n itemIsVisible: true\r\n };\r\n }\r\n\r\n mouseEnter = () => {\r\n this.setState({ isMouseInside: true });\r\n }\r\n\r\n mouseLeave = () => {\r\n this.setState({ isMouseInside: false });\r\n }\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.setState(({ itemIsVisible }) => ({\r\n itemIsVisible: !itemIsVisible\r\n }));\r\n }\r\n\r\n handleDelete = (event) => {\r\n throw new Error('You have to implement the method handleDelete!');\r\n }\r\n\r\n handleCancel = (event) => {\r\n throw new Error('You have to implement the method handleCancel!');\r\n }\r\n\r\n handleEdit = (event) => {\r\n throw new Error('You have to implement the method handleEdit!');\r\n }\r\n\r\n handleSave = (event) => {\r\n throw new Error('You have to implement the method handleSave!');\r\n }\r\n}\r\n\r\nexport default BaseItem;\r\n","export default class PathsApp {\r\n static get LOGIN_ROOT() { return PathsApp.ADMIN_PATH; }\r\n static get QUESTIONS_ROOT() { return `${PathsApp.ADMIN_PATH}/questions`; }\r\n static get QUESTIONS_ADD() { return `${PathsApp.ADMIN_PATH}/questions/add`; }\r\n static get QUESTIONS_EDIT() { return `${PathsApp.ADMIN_PATH}/questions/edit/:id`; }\r\n static get QUESTIONS_EDIT_BASE() { return `${PathsApp.ADMIN_PATH}/questions/edit/`; }\r\n static get PRODUCTS_ROOT() { return `${PathsApp.ADMIN_PATH}/products`; }\r\n static get PRODUCTS_ADD() { return `${PathsApp.ADMIN_PATH}/products/add`; }\r\n static get PRODUCTS_EDIT_BASE() { return `${PathsApp.ADMIN_PATH}/products/edit/`; }\r\n static get PRODUCTS_EDIT() { return `${PathsApp.ADMIN_PATH}/products/edit/:id`; }\r\n static get CATEGORIES_ROOT() { return `${PathsApp.ADMIN_PATH}/categories`; }\r\n static get LAYOUT_ROOT() { return `${PathsApp.ADMIN_PATH}/layout`; }\r\n static get PREVIEW_ROOT() { return `${PathsApp.ADMIN_PATH}/preview`; }\r\n static get FEATURES_ROOT() { return `${PathsApp.ADMIN_PATH}/categories/edit/:id`; }\r\n static get FEATURES_BASE() { return `${PathsApp.ADMIN_PATH}/categories/edit/`; }\r\n static get OPTIONS_ROOT() { return `${PathsApp.ADMIN_PATH}/categories/features/edit/:id`; }\r\n static get OPTIONS_BASE() { return `${PathsApp.ADMIN_PATH}/categories/features/edit/`; }\r\n static get DISTRIBUTORS_ROOT() { return `${PathsApp.ADMIN_PATH}/distributors`; }\r\n static get DISTRIBUTORS_ADD() { return `${PathsApp.ADMIN_PATH}/distributors/add`; }\r\n static get DISTRIBUTORS_EDIT_BASE() { return `${PathsApp.ADMIN_PATH}/distributors/edit/`; }\r\n static get DISTRIBUTORS_EDIT() { return `${PathsApp.ADMIN_PATH}/distributors/edit/:id`; }\r\n static get WIZARD_HOME_ROOT() { return '/:category/:distributor?'; }\r\n static get WIZARD_STEPS_ROOT() { return '/:category/:distributor/wizard'; }\r\n static get WIZARD_RESULT_ROOT() { return '/:category/:distributor/result'; }\r\n static WIZARD_PATH(path, category, distributor) { return path.replace(':category', category).replace(':distributor', distributor) }\r\n static get ADMIN_PATH() { return '/ng-admin'; }\r\n}","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport BaseItem from '../items/BaseItem';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Group from '../../images/Group.png';\r\nimport PathsApp from '../../utils/PathsApp';\r\n\r\nclass QuestionItem extends BaseItem {\r\n\r\n componentDidMount() {\r\n this.setState({\r\n id: this.props.item.id,\r\n name: this.props.item.text,\r\n itemIsVisible: this.props.item.isEnabled\r\n });\r\n }\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n this.props.handleLoad(this.props.item);\r\n this.props.history.push(PathsApp.QUESTIONS_EDIT_BASE + this.props.item.id); \r\n }\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n this.props.handleDelete(this.props.item.id, true);\r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.props.handleVisible(this.props.item.id);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \"order\"\r\n {this.props.item.text}\r\n \r\n \r\n {\r\n this.state.isMouseInside ? : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(QuestionItem);\r\n","export default class ErrorsApp {\r\n static GET_MESSAGE_TEXT(data) {\r\n switch (typeof data) {\r\n case 'string':\r\n return data;\r\n case 'object':\r\n return [].concat.apply([], Object.values(data)).join('. ');\r\n default:\r\n return data;\r\n }\r\n }\r\n}\r\n","import ErrorsApp from \"../../utils/ErrorsApp\";\r\n\r\nexport default class QuestionConstants {\r\n static get BEGIN_LIST_ACTION_TYPE() { return 'question/BEGIN_LIST'; }\r\n static get GET_ALL_BY_CATEGORY_ACTION_TYPE() { return 'question/GET_ALL_BY_CATEGORY'; }\r\n static get BEGIN_ADD_ACTION_TYPE() { return 'question/BEGIN_ADD'; }\r\n static get TOGGLE_ACTION_TYPE() { return 'question/TOGGLE'; }\r\n static get DELETE_ACTION_TYPE() { return 'question/DELETE'; }\r\n static get GET_ACTION_TYPE() { return 'question/GET'; }\r\n static get CHANGE_VALUE_ACTION_TYPE() { return 'question/CHANGE_VALUE'; }\r\n static get CHANGE_ANSWER_ACTION_TYPE() { return 'question/CHANGE_ANSWER'; }\r\n static get RESET_ANSWERS_ACTION_TYPE() { return 'question/RESET_ANSWERS'; }\r\n static get SET_ANSWERS_ACTION_TYPE() { return 'question/SET_ANSWERS'; }\r\n static get GET_LAYOUT_TYPES_ACTION_TYPE() { return 'question/GET_LAYOUT_TYPES'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'question/SAVE_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'question/SAVE_EDIT'; }\r\n static get MESSAGE_LIST_ACTION_TYPE() { return 'question/MESSAGE_LIST'; }\r\n static get MESSAGE_LIST_ACTION_ACTION_TYPE() { return 'question/MESSAGE_LIST_ACTION'; }\r\n static get MESSAGE_ACTION_ACTION_TYPE() { return 'product/MESSAGE_ACTION'; }\r\n static get MESSAGE_OPTIONS_ACTION_TYPE() { return 'question/MESSAGE_OPTIONS'; }\r\n static get UPLOAD_IMAGE_ACTION_TYPE() { return 'question/UPLOAD_IMAGE'; }\r\n static get ORDER_ACTION_TYPE() { return 'question/ORDER'; }\r\n static get ORDER_ANSWERS_ACTION_TYPE() { return 'question/ORDER_ANSWERS'; }\r\n static get ADD_RANGE_ACTION_TYPE() { return 'question/ADD_RANGE'; }\r\n static get CHANGE_VALUE_RANGE_ACTION_TYPE() { return 'question/CHANGE_VALUE_RANGE'; }\r\n static get DELETE_RANGE_ACTION_TYPE() { return 'question/DELETE_RANGE'; }\r\n static get MESSAGE_LIST_NOT_FOUND() { return 'No questions found'; }\r\n static get MESSAGE_ADD_OK() { return { type: 'success', text: 'Question added succesfully.' }; }\r\n static MESSAGE_ADD_ERROR = (data) => { return { type: 'danger', text: ErrorsApp.GET_MESSAGE_TEXT(data) }; }\r\n static get MESSAGE_UPDATE_OK() { return { type: 'success', text: 'Question updated succesfully.' }; }\r\n static MESSAGE_UPDATE_ERROR = (data) => { return { type: 'danger', text: ErrorsApp.GET_MESSAGE_TEXT(data) }; }\r\n static get MESSAGE_LIST_ADD_ERROR() { return { type: 'danger ', text: 'Error creating question.' }; }\r\n static get MESSAGE_OPTIONS_NOT_FOUND() { return 'No options found'; }\r\n}\r\n","const getOrigin = () => {\r\n return window.location.origin;\r\n};\r\n\r\nconst getAPIPath = () => {\r\n return `${getOrigin()}/explore/api/`;\r\n};\r\nexport default getAPIPath;","import getAPIPath from '../../utils/PathResolver';\r\nexport default class QuestionApi {\r\n static GetQuestion = (id) => { return `${getAPIPath()}question/GetById?id=${id}`; }\r\n static GetQuestions = (categoryId) => { return `${getAPIPath()}question/GetAllByCategory?categoryId=${categoryId}`; }\r\n static ToggleQuestion = (id) => { return `${getAPIPath()}question/Toggle?id=${id}`; }\r\n static DeleteQuestion = (id) => { return `${getAPIPath()}question?id=${id}`; }\r\n static get GetLayoutTypes() { return `${getAPIPath()}product/GetLayoutTypes`; }\r\n static get PostQuestion() { return `${getAPIPath()}question`; }\r\n static get PutQuestion() { return `${getAPIPath()}question`; }\r\n static get PutQuestionOrder() { return `${getAPIPath()}question/UpdateOrderNumber`; }\r\n}\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport default class CategoryApi {\r\n static get GetCategories() { return `${getAPIPath()}category`; }\r\n static get PostCategory() { return `${getAPIPath()}category`; }\r\n static get PutCategory() { return `${getAPIPath()}category`; }\r\n static DeleteCategory = (id) => { return `${getAPIPath()}category?id=${id}`; }\r\n static GetCategory = (id) => { return `${getAPIPath()}category/GetById?id=${id}`; }\r\n}\r\n","export default class CategoryConstants {\r\n static get GET_ALL_ACTION_TYPE() { return 'category/GET_ALL'; }\r\n static get GET_ACTION_TYPE() { return 'category/GET'; }\r\n static get BEGIN_ADD_ACTION_TYPE() { return 'category/BEGIN_ADD'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'category/SAVE_ADD'; }\r\n static get CANCEL_ADD_ACTION_TYPE() { return 'category/CANCEL_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'category/SAVE_EDIT'; }\r\n static get DELETE_ACTION_TYPE() { return 'category/DELETE'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'category/MESSAGE'; }\r\n static get MESSAGE_ADD_OK() { return { type: 'success', text: 'Category added succesfully.' }; }\r\n static get MESSAGE_ADD_ERROR() { return { type: 'danger', text: 'Error adding category.' }; }\r\n static get MESSAGE_UPDATE_OK() { return { type: 'success', text: 'Category updated succesfully.' }; }\r\n static get MESSAGE_UPDATE_ERROR() { return { type: 'danger', text: 'Error updating category.' }; }\r\n}\r\n","export default class FeatureConstants {\r\n static get GET_PAGED_ACTION_TYPE() { return 'feature/GET_PAGED'; }\r\n static get GET_ALL_ACTION_TYPE() { return 'feature/GET_ALL'; }\r\n static get GET_ACTION_TYPE() { return 'feature/GET'; }\r\n static get BEGIN_ADD_ACTION_TYPE() { return 'feature/BEGIN_ADD'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'feature/SAVE_ADD'; }\r\n static get CANCEL_ADD_ACTION_TYPE() { return 'feature/CANCEL_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'feature/SAVE_EDIT'; }\r\n static get DELETE_ACTION_TYPE() { return 'feature/DELETE'; }\r\n static get RESET_ACTION_TYPE() { return 'feature/RESET'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'feature/MESSAGE'; }\r\n static get MESSAGE_ADD_OK() { return { type: 'success', text: 'Feature added succesfully.' }; }\r\n static get MESSAGE_ADD_ERROR() { return { type: 'danger', text: 'Error adding category.' }; }\r\n static get MESSAGE_UPDATE_OK() { return { type: 'success', text: 'Feature updated succesfully.' }; }\r\n static get MESSAGE_UPDATE_ERROR() { return { type: 'danger', text: 'Error updating category.' }; }\r\n static get PAGE_SIZE() { return 10; }\r\n}\r\n","import FeatureConstants from \"./FeatureConstants\";\r\nimport getAPIPath from '../../utils/PathResolver';\r\nexport default class FeatureApi {\r\n static GetPagedFeatures = (categoryId, page) => {\r\n return `${getAPIPath()}feature/GetPagedFeaturesByCategory?categoryId=${categoryId}&page=${page}&pageSize=${FeatureConstants.PAGE_SIZE}`;\r\n }\r\n static GetFeatures = (categoryId) => { return `${getAPIPath()}feature/GetAllByCategory?categoryId=${categoryId}`; }\r\n static get PostFeature() { return `${getAPIPath()}feature`; }\r\n static get PutFeature() { return `${getAPIPath()}feature`; }\r\n static DeleteFeature = (id) => { return `${getAPIPath()}feature?id=${id}`; }\r\n static GetFeature = (id) => { return `${getAPIPath()}feature?id=${id}`; }\r\n}\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport default class LoginApi {\r\n static get Authenticate() { return `${getAPIPath()}user/authenticate`; }\r\n static Get = (id) => { return `${getAPIPath()}user/${id}`; }\r\n}\r\n","export default class LoginConstants {\r\n static get AUTHENTICATE_ACTION_TYPE() { return 'auth/AUTHENTICATE'; }\r\n static get LOGOUT_ACTION_TYPE() { return 'auth/LOGOUT'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'auth/MESSAGE'; }\r\n static get LAST_ERROR_ACTION_TYPE() { return 'auth/LAST_ERROR'; }\r\n static get LOCAL_STORAGE() { return 'netgear_auth'; }\r\n static get UNAUTHORIZED_CODE() { return 401; }\r\n static get MESSAGE_ERROR() { return { type: 'danger', text: 'Invalid credentials.' }; }\r\n}\r\n","export default class UserModel {\r\n constructor(username, token) {\r\n this.username = username;\r\n this.token = token;\r\n }\r\n}\r\n","import LoginApi from \"./LoginApi\";\r\nimport LoginConstants from \"./LoginConstants\";\r\nimport axios from 'axios';\r\nimport UserModel from \"./UserModel\";\r\n\r\nconst authenticate = async (dispatch, username, password) => {\r\n try {\r\n const response = await axios.post(LoginApi.Authenticate, { username: username, password: password }); \r\n if (response.data) { \r\n const userSession = new UserModel(response.data.username, response.data.token);\r\n localStorage.setItem(LoginConstants.LOCAL_STORAGE, JSON.stringify(userSession));\r\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + response.data.token;\r\n dispatch({\r\n type: LoginConstants.AUTHENTICATE_ACTION_TYPE,\r\n user: userSession\r\n });\r\n } else {\r\n axios.defaults.headers.common['Authorization'] = '';\r\n }\r\n } catch (e) {\r\n dispatch(actionMessageAuthentication(LoginConstants.MESSAGE_ERROR));\r\n }\r\n};\r\n\r\nconst actionAuthenticate = (username, password) => {\r\n return dispatch => {\r\n authenticate(dispatch, username, password);\r\n };\r\n};\r\n\r\nconst isValidSession = (session) => {\r\n return session && session.username && session.token;\r\n};\r\n\r\nconst actionGetSession = () => {\r\n let userSession = null;\r\n try {\r\n const session = JSON.parse(localStorage.getItem(LoginConstants.LOCAL_STORAGE));\r\n if (isValidSession(session)) {\r\n userSession = session;\r\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + session.token;\r\n } else {\r\n axios.defaults.headers.common['Authorization'] = '';\r\n }\r\n } catch (e) {\r\n console.log('TODO - error session', e);\r\n } \r\n return {\r\n type: LoginConstants.AUTHENTICATE_ACTION_TYPE,\r\n user: userSession\r\n };\r\n};\r\n\r\nconst actionLogout = () => {\r\n localStorage.removeItem(LoginConstants.LOCAL_STORAGE);\r\n return {\r\n type: LoginConstants.LOGOUT_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionErrorAuth = (error) => {\r\n return dispatch => {\r\n if (error && error.response && error.response.status === LoginConstants.UNAUTHORIZED_CODE) {\r\n dispatch(actionLogout());\r\n }\r\n dispatch({\r\n type: LoginConstants.LAST_ERROR_ACTION_TYPE,\r\n error: error\r\n });\r\n };\r\n};\r\n\r\nconst actionMessageAuthentication = (message) => {\r\n return {\r\n type: LoginConstants.MESSAGE_ACTION_TYPE,\r\n message: message\r\n };\r\n};\r\n\r\nexport { actionAuthenticate, actionGetSession, actionLogout, actionErrorAuth, actionMessageAuthentication }\r\n","import CategoryConstants from \"./CategoryConstants\";\r\nimport axios from 'axios';\r\nimport CategoryApi from \"./CategoryApi\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\n\r\n\r\n\r\nconst getCategory = async (dispatch, id) => {\r\n try {\r\n const response = await axios.get(CategoryApi.GetCategory(id));\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.GET_ACTION_TYPE,\r\n selected: response.data\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: null\r\n });\r\n }\r\n}\r\n\r\nconst getCategories = async (dispatch) => {\r\n try {\r\n const response = await axios.get(CategoryApi.GetCategories);\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: null\r\n });\r\n }\r\n}\r\n\r\nconst saveCategory = async (dispatch, category) => {\r\n try {\r\n const response = await axios.post(CategoryApi.PostCategory, category);\r\n if (response.data) {\r\n dispatch(actionMessageCategory(CategoryConstants.MESSAGE_ADD_OK));\r\n dispatch({\r\n type: CategoryConstants.SAVE_ADD_ACTION_TYPE,\r\n newCategory: response.data\r\n });\r\n } else { \r\n dispatch(actionMessageCategory(CategoryConstants.MESSAGE_ADD_ERROR));\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageCategory(CategoryConstants.MESSAGE_ADD_ERROR));\r\n }\r\n};\r\n\r\nconst editCategory = async (dispatch, category) => {\r\n try {\r\n const response = await axios.put(CategoryApi.PutCategory, category);\r\n if (response.data) {\r\n dispatch(actionMessageCategory(CategoryConstants.MESSAGE_UPDATE_OK));\r\n dispatch({\r\n type: CategoryConstants.SAVE_EDIT_ACTION_TYPE,\r\n editedCategory: category\r\n });\r\n } else {\r\n dispatch(actionMessageCategory(CategoryConstants.MESSAGE_UPDATE_ERROR));\r\n dispatch({\r\n type: CategoryConstants.CANCEL_EDIT_ACTION_TYPE\r\n });\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageCategory(CategoryConstants.MESSAGE_UPDATE_ERROR));\r\n dispatch({\r\n type: CategoryConstants.CANCEL_EDIT_ACTION_TYPE\r\n });\r\n } \r\n};\r\n\r\nconst deleteCategory = async (dispatch, id) => {\r\n try {\r\n const response = await axios.delete(CategoryApi.DeleteCategory(id));\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.DELETE_ACTION_TYPE,\r\n id: id\r\n });\r\n } else {\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst actionGetCategories = () => {\r\n return dispatch => {\r\n getCategories(dispatch);\r\n };\r\n};\r\n\r\nconst actionGetCategory = (id) => {\r\n return dispatch => {\r\n getCategory(dispatch, id);\r\n };\r\n};\r\n\r\nconst actionBeginAddCategory = () => {\r\n return {\r\n type: CategoryConstants.BEGIN_ADD_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveAddCategory = (category) => {\r\n return dispatch => {\r\n saveCategory(dispatch, category);\r\n };\r\n};\r\n\r\nconst actionCancelAddCategory = () => {\r\n return {\r\n type: CategoryConstants.CANCEL_ADD_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveEditCategory = (category) => {\r\n return dispatch => {\r\n editCategory(dispatch, category);\r\n };\r\n};\r\n\r\nconst actionDeleteCategory = (id) => {\r\n return dispatch => {\r\n deleteCategory(dispatch, id);\r\n };\r\n};\r\n\r\nconst actionMessageCategory = (message) => {\r\n return {\r\n type: CategoryConstants.MESSAGE_ACTION_TYPE,\r\n message: message\r\n };\r\n};\r\n\r\nexport {\r\n actionGetCategories,\r\n actionGetCategory,\r\n actionBeginAddCategory,\r\n actionSaveAddCategory,\r\n actionCancelAddCategory,\r\n actionSaveEditCategory,\r\n actionDeleteCategory,\r\n actionMessageCategory\r\n};\r\n","class BaseModel {\r\n constructor(id, name) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n\r\n static getEmpty = () => { return { id: '', name: '' }; };\r\n\r\n static isEmpty = (model) => {\r\n return model.id === '';\r\n };\r\n}\r\n\r\nexport default BaseModel;\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nclass FeatureModel extends BaseModel {\r\n constructor(id, name, description, categoryId) {\r\n super(id, name);\r\n this.description = description;\r\n this.categoryId = categoryId;\r\n }\r\n}\r\n\r\nexport default FeatureModel;\r\n","import FeatureConstants from \"./FeatureConstants\";\r\nimport axios from 'axios';\r\nimport FeatureModel from \"./FeatureModel\";\r\nimport FeatureApi from \"./FeatureApi\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\n\r\nconst getFeatures = async (dispatch, categoryId, page) => {\r\n try {\r\n const isPaged = Number.isInteger(page); \r\n const response = isPaged ? await axios.get(FeatureApi.GetPagedFeatures(categoryId, page)) : await axios.get(FeatureApi.GetFeatures(categoryId));\r\n if (response.data) { \r\n dispatch({\r\n type: FeatureConstants.GET_ALL_ACTION_TYPE,\r\n items: isPaged ? response.data.list : getProductFeatures(response.data),\r\n totalItems: isPaged ? response.data.totalItems : response.data.length,\r\n totalPages: isPaged ? response.data.totalPages : 1\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: FeatureConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst getProductFeatures = (features) => {\r\n return features.map(f => { return { ...f, isEnabled: false }; });\r\n};\r\n\r\nconst getFeature = async (dispatch, id) => {\r\n try {\r\n const response = await axios.get(FeatureApi.GetFeature(id));\r\n if (response.data) {\r\n dispatch({\r\n type: FeatureConstants.GET_ACTION_TYPE,\r\n selected: response.data\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: FeatureConstants.GET_ACTION_TYPE,\r\n items: null\r\n });\r\n }\r\n}\r\n\r\nconst saveFeature = async (dispatch, feature, categoryId) => {\r\n try {\r\n const response = await axios.post(FeatureApi.PostFeature, new FeatureModel(feature.id, feature.name, feature.name, categoryId));\r\n if (response.data) {\r\n dispatch(actionMessageFeature(FeatureConstants.MESSAGE_ADD_OK));\r\n dispatch({\r\n type: FeatureConstants.SAVE_ADD_ACTION_TYPE,\r\n newFeature: response.data\r\n });\r\n } else {\r\n dispatch(actionMessageFeature(FeatureConstants.MESSAGE_ADD_ERROR));\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageFeature(FeatureConstants.MESSAGE_ADD_ERROR));\r\n }\r\n};\r\n\r\nconst editFeature = async (dispatch, feature, categoryId) => {\r\n try {\r\n const editedFeature = new FeatureModel(feature.id, feature.name, feature.name, categoryId);\r\n const response = await axios.put(FeatureApi.PutFeature, editedFeature);\r\n if (response.data) {\r\n dispatch(actionMessageFeature(FeatureConstants.MESSAGE_UPDATE_OK));\r\n dispatch({\r\n type: FeatureConstants.SAVE_EDIT_ACTION_TYPE,\r\n editedFeature: editedFeature\r\n });\r\n } else {\r\n dispatch(actionMessageFeature(FeatureConstants.MESSAGE_UPDATE_ERROR));\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageFeature(FeatureConstants.MESSAGE_UPDATE_ERROR));\r\n }\r\n};\r\n\r\nconst deleteFeature = async (dispatch, id) => {\r\n try {\r\n const response = await axios.delete(FeatureApi.DeleteFeature(id));\r\n if (response.data) {\r\n dispatch({\r\n type: FeatureConstants.DELETE_ACTION_TYPE,\r\n id: id\r\n });\r\n } else {\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst actionGetFeatures = (categoryId) => {\r\n return dispatch => {\r\n getFeatures(dispatch, categoryId);\r\n };\r\n};\r\n\r\nconst actionGetFeature = (id) => {\r\n return dispatch => {\r\n getFeature(dispatch, id);\r\n };\r\n};\r\n\r\nconst actionBeginAddFeature = () => {\r\n return {\r\n type: FeatureConstants.BEGIN_ADD_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveAddFeature = (feature, categoryId) => {\r\n return dispatch => {\r\n saveFeature(dispatch, feature, categoryId);\r\n };\r\n};\r\n\r\nconst actionCancelAddFeature = () => {\r\n return {\r\n type: FeatureConstants.CANCEL_ADD_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveEditFeature = (feature, categoryId) => {\r\n return dispatch => {\r\n editFeature(dispatch, feature, categoryId);\r\n };\r\n};\r\n\r\nconst actionDeleteFeature = (id) => {\r\n return dispatch => {\r\n deleteFeature(dispatch, id);\r\n };\r\n};\r\n\r\nconst actionMessageFeature = (message) => {\r\n return {\r\n type: FeatureConstants.MESSAGE_ACTION_TYPE,\r\n message: message\r\n };\r\n};\r\n\r\nconst actionGetFeaturesByPage = (categoryId, page) => {\r\n return dispatch => {\r\n getFeatures(dispatch, categoryId, page);\r\n };\r\n};\r\n\r\nexport {\r\n actionGetFeatures,\r\n actionGetFeature,\r\n actionBeginAddFeature,\r\n actionSaveAddFeature,\r\n actionCancelAddFeature,\r\n actionSaveEditFeature,\r\n actionDeleteFeature,\r\n actionMessageFeature,\r\n actionGetFeaturesByPage\r\n};\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nclass LayoutTypeModel extends BaseModel {\r\n constructor(id, name, code, description) {\r\n super(id, name);\r\n this.code = code;\r\n this.description = description; \r\n }\r\n\r\n static getEmpty = () => {\r\n return {\r\n id: '',\r\n name: '',\r\n code: '',\r\n description: ''\r\n };\r\n };\r\n}\r\n\r\nexport default LayoutTypeModel;","export default class UuidUtil {\r\n static get EMPTY() { return '00000000-0000-0000-0000-000000000000'; }\r\n}","import UuidUtil from \"../../utils/UuidUtil\";\r\n\r\nexport default class QuestionRequestModel {\r\n constructor(id, orderNumber, text, isMultipleChoice, layoutTypeId, categoryId, featureId, helpInfo, isEnabled, answers) {\r\n this.id = id;\r\n this.text = text;\r\n this.orderNumber = orderNumber;\r\n this.isMultipleChoice = isMultipleChoice;\r\n this.layoutTypeId = layoutTypeId;\r\n this.categoryId = categoryId;\r\n this.featureId = featureId === '' ? UuidUtil.EMPTY : featureId;\r\n this.helpInfo = helpInfo;\r\n this.isEnabled = isEnabled;\r\n this.answers = answers;\r\n }\r\n}\r\n","import LayoutTypeModel from './LayoutTypeModel';\r\nimport BaseModel from '../../models/BaseModel';\r\nimport FeatureModel from '../features/FeatureModel';\r\nimport QuestionRequestModel from './QuestionRequestModel';\r\n\r\nclass QuestionModel {\r\n constructor(id, text, isMultipleChoice, layoutType, category, feature, helpInfo, answers, isEnabled, orderNumber, exists, originalAnwers) {\r\n this.id = id;\r\n this.text = text;\r\n this.isMultipleChoice = isMultipleChoice;\r\n this.layoutType = layoutType;\r\n this.category = category;\r\n this.feature = feature;\r\n this.helpInfo = helpInfo;\r\n this.answers = answers;\r\n this.originalAnwers = originalAnwers;\r\n this.isEnabled = isEnabled;\r\n this.orderNumber = orderNumber;\r\n this.exists = exists;\r\n this.ranges = [];\r\n }\r\n\r\n static getEmpty = () => {\r\n return {\r\n id: '',\r\n text: '',\r\n isMultipleChoice : false,\r\n layoutType: LayoutTypeModel.getEmpty(),\r\n category: BaseModel.getEmpty(),\r\n feature: FeatureModel.getEmpty(),\r\n helpInfo: '',\r\n answers: [],\r\n originalAnwers: [],\r\n isEnabled: true,\r\n orderNumber: 1,\r\n exists: true,\r\n ranges: []\r\n };\r\n };\r\n\r\n static isEmpty = (question) => {\r\n return question.id === '';\r\n };\r\n\r\n toRequest() {\r\n return new QuestionRequestModel(\r\n this.id,\r\n this.orderNumber,\r\n this.text,\r\n this.isMultipleChoice,\r\n this.layoutType.id,\r\n this.category.id,\r\n this.feature.id,\r\n this.helpInfo,\r\n this.isEnabled,\r\n this.answers.map(answer => answer.toRequest())\r\n )\r\n }\r\n}\r\n\r\nexport default QuestionModel;\r\n","export default class QuestionAnswerRequestModel {\r\n constructor(id, optionId, isEnabled, imageUrl, orderNumber, minValue, maxValue, description) {\r\n this.id = id;\r\n this.optionId = optionId;\r\n this.isEnabled = isEnabled;\r\n this.imageUrl = imageUrl;\r\n this.orderNumber = orderNumber;\r\n this.minValue = minValue;\r\n this.maxValue = maxValue;\r\n this.description = description;\r\n }\r\n}\r\n","import QuestionAnswerRequestModel from \"./QuestionAnswerRequestModel\";\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\n\r\nclass QuestionAnswerModel {\r\n constructor(id, questionId, option, isEnabled, imageUrl, orderNumber, minValue, maxValue, description) {\r\n this.id = id;\r\n this.questionId = questionId;\r\n this.option = option;\r\n this.isEnabled = isEnabled;\r\n this.imageUrl = imageUrl;\r\n this.orderNumber = orderNumber;\r\n this.minValue = minValue;\r\n this.maxValue = maxValue;\r\n this.description = description;\r\n }\r\n\r\n toRequest() {\r\n return new QuestionAnswerRequestModel(this.id, this.option ? this.option.id : UuidUtil.EMPTY, this.isEnabled, this.imageUrl, this.orderNumber, this.minValue, this.maxValue, this.description);\r\n }\r\n}\r\n\r\nexport default QuestionAnswerModel;\r\n","export default class OptionConstants {\r\n static get GET_PAGED_ACTION_TYPE() { return 'option/GET_PAGED'; }\r\n static get GET_ALL_ACTION_TYPE() { return 'option/GET_ALL'; }\r\n static get BEGIN_ADD_ACTION_TYPE() { return 'option/BEGIN_ADD'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'option/SAVE_ADD'; }\r\n static get CANCEL_ADD_ACTION_TYPE() { return 'option/CANCEL_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'option/SAVE_EDIT'; }\r\n static get DELETE_ACTION_TYPE() { return 'option/DELETE'; }\r\n static get RESET_ACTION_TYPE() { return 'option/RESET'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'option/MESSAGE'; }\r\n static get ORDER_ACTION_TYPE() { return 'option/ORDER'; }\r\n static get MESSAGE_ADD_OK() { return { type: 'success', text: 'Option added succesfully.' }; }\r\n static get MESSAGE_ADD_ERROR() { return { type: 'danger', text: 'Error adding option.' }; }\r\n static get MESSAGE_UPDATE_OK() { return { type: 'success', text: 'Option updated succesfully.' }; }\r\n static get MESSAGE_UPDATE_ERROR() { return { type: 'danger', text: 'Error updating option.' }; }\r\n static get PAGE_SIZE() { return 10; }\r\n}\r\n","import OptionConstants from \"./OptionConstants\";\r\nimport getAPIPath from '../../utils/PathResolver';\r\nexport default class OptionApi{\r\n static GetPagedOptions = (featureId, page) => { return `${getAPIPath()}option/GetPagedOptionsByFeature?featureId=${featureId}&page=${page}&pageSize=${OptionConstants.PAGE_SIZE}`; }\r\n static GetOptions = (featureId) => { return `${getAPIPath()}option?featureId=${featureId}`; }\r\n static get PostOption() { return `${getAPIPath()}option`; }\r\n static get PutOption() { return `${getAPIPath()}option`; }\r\n static DeleteOption = (id) => { return `${getAPIPath()}option?id=${id}`; }\r\n}\r\n","import getAPIPath from './PathResolver';\r\nexport default class UploadFile {\r\n static get Api() { return `${getAPIPath()}upload`; }\r\n}\r\n","export default class UploadImageConstants {\r\n static get ERROR_ACTION_TYPE() { return 'upload_image/ERROR'; }\r\n}\r\n","import UploadImageConstants from \"./UploadImageConstants\";\r\n\r\nconst actionSetErrorUploadImage = (key, isError) => {\r\n return {\r\n type: UploadImageConstants.ERROR_ACTION_TYPE,\r\n key: key,\r\n isError: isError\r\n };\r\n};\r\n\r\nexport { actionSetErrorUploadImage }\r\n","export default class TypeLayoutEnum {\r\n static get BOX() { return 'BOX'; }\r\n static get CARD() { return 'CARD'; }\r\n static get PLAIN() { return 'PLAIN'; }\r\n static get ICON() { return 'ICON'; }\r\n static get RANGE() { return 'RANGE'; }\r\n}\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nclass OptionModel extends BaseModel {\r\n constructor(id, name, description, featureId) {\r\n super(id, name);\r\n this.description = description;\r\n this.featureId = featureId;\r\n }\r\n}\r\n\r\nexport default OptionModel;\r\n","import uuid from 'uuid/v1';\r\nimport UuidUtil from '../../utils/UuidUtil';\r\n\r\nclass RangeModel {\r\n constructor(key, id, minValue, maxValue, description, isEnabled) {\r\n this.key = key;\r\n this.id = id;\r\n this.minValue = minValue;\r\n this.maxValue = maxValue;\r\n this.description = description;\r\n this.isEnabled = isEnabled\r\n }\r\n\r\n static getEmpty = () => {\r\n return {\r\n key: uuid().toString(),\r\n id: UuidUtil.EMPTY,\r\n minValue: '',\r\n maxValue: '',\r\n description: '',\r\n isEnabled: true\r\n };\r\n };\r\n}\r\n\r\nexport default RangeModel;\r\n","import QuestionConstants from \"./QuestionConstants\";\r\nimport axios from 'axios';\r\nimport QuestionApi from \"./QuestionApi\";\r\nimport CategoryApi from \"../categories/CategoryApi\";\r\nimport CategoryConstants from \"../categories/CategoryConstants\";\r\nimport FeatureApi from \"../features/FeatureApi\";\r\nimport FeatureConstants from \"../features/FeatureConstants\";\r\nimport { actionGetCategories } from \"../categories/CategoryActions\";\r\nimport { actionGetFeatures } from \"../features/FeatureActions\";\r\nimport QuestionModel from \"./QuestionModel\";\r\nimport QuestionAnswerModel from \"./QuestionAnswerModel\";\r\nimport uuid from 'uuid/v1';\r\nimport OptionApi from \"../options/OptionApi\";\r\nimport OptionConstants from \"../options/OptionConstants\";\r\nimport arrayMove from 'array-move';\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\nimport UploadFile from \"../../utils/UploadFile\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\nimport { actionSetErrorUploadImage } from \"../uploadImage/UploadImageActions\";\r\nimport TypeLayoutEnum from \"../../models/TypeLayoutEnum\";\r\nimport OptionModel from \"../options/OptionModel\";\r\nimport RangeModel from \"./RangeModel\";\r\nimport BaseModel from \"../../models/BaseModel\";\r\n\r\nconst sortOptions = (options, answers) => {\r\n if (answers.every(answer => answer.option)) {\r\n answers.forEach(answer => {\r\n const tempIndexOption = options.findIndex(option => {\r\n return option.id === answer.option.id;\r\n });\r\n if (tempIndexOption > -1) {\r\n const tempAnswer = options[answer.orderNumber];\r\n options[answer.orderNumber] = options[tempIndexOption];\r\n options[tempIndexOption] = tempAnswer;\r\n }\r\n });\r\n }\r\n return options.filter(option => typeof option === 'object');\r\n};\r\n\r\nconst getOptions = async (dispatch, featureId, answers) => {\r\n try {\r\n const response = await axios.get(OptionApi.GetOptions(featureId));\r\n if (response.data) { \r\n dispatch({\r\n type: OptionConstants.GET_ALL_ACTION_TYPE,\r\n items: answers && answers.length > 0 ? sortOptions(response.data, answers) : response.data\r\n });\r\n if (response.data.length > 0) {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE,\r\n message: null\r\n });\r\n } else {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE,\r\n message: QuestionConstants.MESSAGE_OPTIONS_NOT_FOUND\r\n }); \r\n } \r\n } else {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE,\r\n message: QuestionConstants.MESSAGE_OPTIONS_NOT_FOUND\r\n });\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: OptionConstants.GET_ALL_ACTION_TYPE,\r\n items: null\r\n });\r\n }\r\n};\r\n\r\nconst getQuestions = async (dispatch, categoryId) => {\r\n try {\r\n const response = await axios.get(QuestionApi.GetQuestions(categoryId));\r\n if (response.data) { \r\n dispatch({\r\n type: QuestionConstants.GET_ALL_BY_CATEGORY_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null,\r\n category: categoryId\r\n });\r\n if (response.data.length > 0) {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: null\r\n });\r\n } else {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: QuestionConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n } \r\n } else {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: QuestionConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: QuestionConstants.GET_ALL_BY_CATEGORY_ACTION_TYPE,\r\n items: null,\r\n category: categoryId\r\n });\r\n }\r\n};\r\n\r\nconst beginList = async (dispatch) => {\r\n try {\r\n const response = await axios.get(CategoryApi.GetCategories);\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null\r\n }); \r\n if (response.data.length > 0) { \r\n dispatch(actionGetQuestions(response.data[0].id));//TODO - There should be a way to get main category or endpoint get categories in order , ie. first category result is the main one\r\n }\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: QuestionConstants.BEGIN_LIST_ACTION_TYPE,\r\n categories: null,\r\n });\r\n }\r\n};\r\n\r\nconst changeCategory = async (dispatch, categoryId) => {\r\n try { \r\n const response = await axios.get(FeatureApi.GetFeatures(categoryId));\r\n if (response.data) {\r\n dispatch({\r\n type: FeatureConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data,\r\n totalItems: response.data.length,\r\n totalPages: 1\r\n }); \r\n if (response.data.length > 0) {\r\n dispatch(actionChangeValueQuestion('feature', response.data[0]));\r\n dispatch(actionChangeFeature(response.data[0].id));\r\n }\r\n else {\r\n dispatch({\r\n type: OptionConstants.RESET_ACTION_TYPE\r\n });\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE,\r\n message: QuestionConstants.MESSAGE_OPTIONS_NOT_FOUND\r\n });\r\n dispatch(actionChangeValueQuestion('feature', BaseModel.getEmpty()));\r\n dispatch(actionChangeFeature(''));\r\n }\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: FeatureConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst getDataToQuestions = async (dispatch) => {\r\n try {\r\n dispatch(actionGetLayoutTypes(true));\r\n const response = await axios.get(CategoryApi.GetCategories);\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null\r\n });\r\n if (response.data.length > 0) {\r\n dispatch(actionChangeValueQuestion('category', response.data[0]));\r\n changeCategory(dispatch, response.data[0].id);\r\n }\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst toggleQuestion = async (dispatch, questionId) => {\r\n try {\r\n const response = await axios.delete(QuestionApi.ToggleQuestion(questionId));\r\n if (response.data) {\r\n dispatch({\r\n type: QuestionConstants.TOGGLE_ACTION_TYPE,\r\n id: questionId\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst deleteQuestion = async (dispatch, questionId, isFromList) => {\r\n try {\r\n const response = await axios.delete(QuestionApi.DeleteQuestion(questionId));\r\n if (response.data) {\r\n dispatch({\r\n type: QuestionConstants.DELETE_ACTION_TYPE,\r\n id: questionId,\r\n isFromList: isFromList\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst getQuestion = async (dispatch, questionId) => {\r\n try {\r\n const response = await axios.get(QuestionApi.GetQuestion(questionId));\r\n if (response.data && response.data.length > 0) {\r\n const question = response.data[0];\r\n initImages(dispatch, question);\r\n dispatch(actionLoadQuestion(question));\r\n dispatch(actionGetLayoutTypes(false));\r\n if (question.ranges && question.ranges.length === 0) {\r\n dispatch(actionAddRange(RangeModel.getEmpty()));\r\n }\r\n dispatch(actionGetCategories());\r\n dispatch(actionGetFeatures(response.data[0].category.id));\r\n getOptions(dispatch, response.data[0].feature.id, question.answers);\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst initImages = (dispatch, question) => {\r\n try {\r\n question.answers.forEach(answer => {\r\n dispatch(actionSetErrorUploadImage(answer.option.id, answer.imageUrl && answer.imageUrl.length > 0 ? false : true));\r\n });\r\n } catch (e) {\r\n console.log(\"TODO - error answer initImages\");\r\n } \r\n}\r\n\r\nconst getLayoutTypes = async (dispatch, isAdd) => {\r\n try {\r\n const response = await axios.get(QuestionApi.GetLayoutTypes);\r\n if (response.data && response.data.length > 0) {\r\n dispatch({\r\n type: QuestionConstants.GET_LAYOUT_TYPES_ACTION_TYPE,\r\n layoutTypes: response.data\r\n });\r\n if (isAdd) {\r\n dispatch(actionChangeValueQuestion('layoutType', response.data[0]));\r\n }\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - NO DATA ON SERVER\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst uploadFile = async (dispatch, file, optionId) => {\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n const response = await axios.post(UploadFile.Api, formData);\r\n if (response.data) {\r\n dispatch({\r\n type: QuestionConstants.UPLOAD_IMAGE_ACTION_TYPE,\r\n optionId: optionId,\r\n imageUrl: response.data.dbPath\r\n });\r\n dispatch(dispatch(actionSetErrorUploadImage(optionId, false)));\r\n } else {\r\n dispatch(dispatch(actionSetErrorUploadImage(optionId, true)));\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageQuestionDetail(QuestionConstants.MESSAGE_ADD_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst actionGetQuestions = (categoryId) => {\r\n return dispatch => {\r\n getQuestions(dispatch, categoryId)\r\n };\r\n};\r\n\r\nconst actionBeginListQuestion = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: QuestionConstants.BEGIN_LIST_ACTION_TYPE\r\n });\r\n beginList(dispatch);\r\n };\r\n};\r\n\r\nconst actionBeginAddQuestion = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_LIST_ACTION_ACTION_TYPE,\r\n messageListAction: null\r\n });\r\n dispatch({\r\n type: QuestionConstants.BEGIN_ADD_ACTION_TYPE\r\n });\r\n dispatch(actionAddRange(RangeModel.getEmpty()));\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE,\r\n message: null\r\n });\r\n getDataToQuestions(dispatch);\r\n };\r\n};\r\n\r\nconst actionBeginEditQuestion = (questionId) => {\r\n return dispatch => {\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_LIST_ACTION_ACTION_TYPE,\r\n messageListAction: null\r\n });\r\n dispatch({\r\n type: QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE,\r\n message: null\r\n });\r\n getQuestion(dispatch, questionId);\r\n };\r\n};\r\n\r\nconst actionToggleQuestion = (questionId) => {\r\n return dispatch => {\r\n toggleQuestion(dispatch, questionId);\r\n };\r\n};\r\n\r\nconst actionDeleteQuestion = (questionId, isFromList) => {\r\n return dispatch => {\r\n deleteQuestion(dispatch, questionId, isFromList);\r\n };\r\n};\r\n\r\nconst actionChangeCategory = (categoryId) => {\r\n return dispatch => {\r\n changeCategory(dispatch, categoryId);\r\n };\r\n};\r\n\r\nconst actionChangeValueQuestion = (propertie, value) => {\r\n return dispatch => {\r\n dispatch({\r\n type: QuestionConstants.CHANGE_VALUE_ACTION_TYPE,\r\n propertie: propertie,\r\n value: value\r\n });\r\n };\r\n};\r\n\r\nconst actionChangeAnswer = (answer, isEnabled) => {\r\n return dispatch => {\r\n dispatch({\r\n type: QuestionConstants.CHANGE_ANSWER_ACTION_TYPE,\r\n answer: answer,\r\n isEnabled: isEnabled\r\n });\r\n };\r\n};\r\n\r\nconst actionChangeFeature = (featureId) => {\r\n return dispatch => {\r\n dispatch({\r\n type: QuestionConstants.RESET_ANSWERS_ACTION_TYPE\r\n });\r\n getOptions(dispatch, featureId);\r\n };\r\n};\r\n\r\nconst actionGetLayoutTypes = (isAdd) => {\r\n return dispatch => {\r\n getLayoutTypes(dispatch, isAdd);\r\n };\r\n};\r\n\r\nconst objectToQuestionRequest = (question, isAdd) => {\r\n let answers = [];\r\n if (isAdd && question.layoutType.code === TypeLayoutEnum.RANGE) {\r\n answers = question.ranges.map((range, index) => new QuestionAnswerModel(range.id, question.id, new OptionModel(UuidUtil.EMPTY, '', '', UuidUtil.EMPTY), range.isEnabled, '', index + 1, range.minValue === '' ? 0 : range.minValue, range.maxValue === '' ? 0 : range.maxValue, range.description))\r\n } else {\r\n answers = question.answers.map(answer => new QuestionAnswerModel(answer.id, answer.questionId, answer.option, answer.isEnabled, answer.imageUrl, answer.orderNumber, answer.minValue, answer.maxValue, answer.description));\r\n } \r\n const questionRequest = new QuestionModel(\r\n isAdd ? uuid().toString() : question.id,\r\n question.text,\r\n question.isMultipleChoice,\r\n question.layoutType,\r\n question.category,\r\n question.feature,\r\n question.helpInfo,\r\n answers,\r\n question.isEnabled,\r\n question.orderNumber,\r\n question.exists).toRequest();\r\n return questionRequest;\r\n}\r\n\r\nconst saveQuestion = async (dispatch, question) => { \r\n try {\r\n const response = await axios.post(QuestionApi.PostQuestion, objectToQuestionRequest(question, true));\r\n if (response.data) {\r\n dispatch(actionMessageQuestion(QuestionConstants.MESSAGE_ADD_OK));\r\n dispatch({\r\n type: QuestionConstants.SAVE_ADD_ACTION_TYPE,\r\n });\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageQuestionDetail(QuestionConstants.MESSAGE_ADD_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n } \r\n};\r\n\r\nconst getAnswerToUpdate = (originalAnwers, newAnswers) => {\r\n if (originalAnwers.length === newAnswers.length && originalAnwers.every(original => newAnswers.find(newanswer => newanswer.option.id === original.option.id && newanswer.isEnabled === original.isEnabled))) {//IF THERE ARE SAME ANSWERS\r\n originalAnwers = originalAnwers.map(original => {\r\n let found = newAnswers.find(newanswer => newanswer.option.id === original.option.id);\r\n original.imageUrl = found.imageUrl;\r\n original.orderNumber = found.orderNumber;\r\n return original;\r\n });//UPDATE IMAGEURL, ORDERNUMBER\r\n return originalAnwers;//RETURN THE ORIGINAL\r\n } else {//FIND DIFFERENCES\r\n let intersection = originalAnwers.filter(original => newAnswers.find(newanswer => newanswer.option.id === original.option.id) ? true : false);\r\n intersection = intersection.map(inter => {\r\n let found = newAnswers.find(newanswer => newanswer.option.id === inter.option.id);\r\n inter.isEnabled = found.isEnabled;\r\n inter.imageUrl = found.imageUrl;\r\n inter.orderNumber = found.orderNumber;\r\n return inter;\r\n });\r\n if (intersection) { //THERE ARE COMMON ANSWERS BETWEEN ORIGINAL AND NEWS\r\n let originalMinusNews = originalAnwers.filter(original => newAnswers.find(newanswer => newanswer.option.id === original.option.id) ? false : true);\r\n originalMinusNews = originalMinusNews.map(answer => {\r\n answer.isEnabled = false;\r\n return answer;\r\n });\r\n originalMinusNews = originalMinusNews.concat(intersection);\r\n let newsMinusOriginal = newAnswers.filter(newanswer => originalAnwers.find(original => original.option.id === newanswer.option.id) ? false : true);\r\n newsMinusOriginal = newsMinusOriginal.map(answer => new QuestionAnswerModel(UuidUtil.EMPTY, answer.questionId, answer.option, answer.isEnabled, answer.imageUrl, answer.orderNumber, answer.minValue, answer.maxValue, answer.description));\r\n return originalMinusNews.concat(newsMinusOriginal);\r\n } else { //NEW ANSWERS ARE TOTALLY DIFFERENTS\r\n originalAnwers = originalAnwers.map(answer => {\r\n answer.isEnabled = false;\r\n return answer;\r\n });\r\n newAnswers = newAnswers.map(answer => new QuestionAnswerModel(UuidUtil.EMPTY, answer.questionId, answer.option, answer.isEnabled, answer.imageUrl, answer.orderNumber, answer.minValue, answer.maxValue, answer.description));\r\n return originalAnwers.concat(newAnswers);\r\n }\r\n }\r\n};\r\n\r\nconst editQuestion = async (dispatch, question) => {\r\n try {\r\n if (question.layoutType.code === TypeLayoutEnum.RANGE) {\r\n question.answers = question.originalAnwers.map(answer => {\r\n if (answer.option) {\r\n answer.isEnabled = false;\r\n }\r\n return answer;\r\n });\r\n let rangesToAnswers = question.ranges.map((r, index) => new QuestionAnswerModel(r.id, question.id, new OptionModel(UuidUtil.EMPTY, '', '', UuidUtil.EMPTY), r.isEnabled, '', index + 1, r.minValue === '' ? 0 : r.minValue, r.maxValue === '' ? 0 : r.maxValue, r.description));\r\n rangesToAnswers.forEach(r => {\r\n if (r.id === UuidUtil.EMPTY) {\r\n question.answers.push(r);\r\n } else {\r\n const indexAnswer = question.answers.findIndex(a => a.id === r.id);\r\n if (indexAnswer > -1) {\r\n question.answers[indexAnswer] = r;\r\n }\r\n } \r\n });\r\n } else {\r\n const answersOriginalWithOptions = question.originalAnwers.filter(answer => answer.option);\r\n const rangesOriginal = question.originalAnwers.filter(answer => !answer.option).map(answer => {\r\n answer.isEnabled = false;\r\n return answer;\r\n });\r\n const answersWithOptions = question.answers.filter(answer => answer.option);\r\n question.answers = rangesOriginal.concat(getAnswerToUpdate(answersOriginalWithOptions, answersWithOptions));\r\n } \r\n const request = objectToQuestionRequest(question, false);\r\n const response = await axios.put(QuestionApi.PutQuestion, request);\r\n if (response.data) {\r\n dispatch(actionMessageQuestion(QuestionConstants.MESSAGE_UPDATE_OK));\r\n dispatch({\r\n type: QuestionConstants.SAVE_EDIT_ACTION_TYPE,\r\n });\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageQuestionDetail(QuestionConstants.MESSAGE_UPDATE_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n } \r\n};\r\n\r\nconst actionSaveAddQuestion = (question) => {\r\n return dispatch => {\r\n dispatch(actionMessageQuestionDetail(null));\r\n saveQuestion(dispatch, question);\r\n };\r\n};\r\n\r\nconst actionSaveEditQuestion = (question) => {\r\n return dispatch => {\r\n dispatch(actionMessageQuestionDetail(null));\r\n editQuestion(dispatch, question);\r\n };\r\n};\r\n\r\nconst saveOrder = async (dispatch, oldIndex, newIndex, oldQuestions) => {\r\n try {\r\n const newQuestions = arrayMove(oldQuestions, oldIndex, newIndex);\r\n dispatch({\r\n type: QuestionConstants.ORDER_ACTION_TYPE,\r\n questions: newQuestions\r\n });\r\n const requestOrder = newQuestions.map((question, index) => ({ id: question.id, orderNumber: index + 1 })); \r\n const response = await axios.put(QuestionApi.PutQuestionOrder, requestOrder); \r\n if (response.data) {\r\n console.log(\"TODO - message to user\", response.data);\r\n } else {\r\n dispatch({\r\n type: QuestionConstants.ORDER_ACTION_TYPE,\r\n questions: oldQuestions\r\n });\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: QuestionConstants.ORDER_ACTION_TYPE,\r\n questions: oldQuestions\r\n });\r\n }\r\n};\r\n\r\nconst actionOrderQuestion = (oldIndex, newIndex, oldQuestions) => {\r\n return dispatch => {\r\n saveOrder(dispatch, oldIndex, newIndex, oldQuestions);\r\n };\r\n};\r\n\r\nconst actionLoadQuestion = (question) => {\r\n question.exists = true;\r\n question.originalAnwers = question.answers;\r\n question.answers = question.answers.filter(answer => answer.isEnabled);\r\n if (question.layoutType.code === TypeLayoutEnum.RANGE) {\r\n question.ranges = question.answers.map(answer => new RangeModel(answer.id, answer.id, answer.minValue, answer.maxValue, answer.description, answer.isEnabled));\r\n question.answers = [];\r\n } else {\r\n question.ranges = [];\r\n }\r\n // if there are answers with same order. Bad data. So fix it\r\n if (question.answers && question.answers.length > 0) {\r\n const firstOrder = question.answers[0].orderNumber;\r\n if (question.answers.every(answer => answer.orderNumber === firstOrder)) {\r\n question.answers = question.answers.map((answer, index) => {\r\n answer.orderNumber = index;\r\n return answer;\r\n })\r\n }\r\n }\r\n return {\r\n type: QuestionConstants.GET_ACTION_TYPE,\r\n question: question,\r\n tempAnswers: question.layoutType.code === TypeLayoutEnum.RANGE ? [] : question.answers.map(answer => { return { optionId: answer.option.id, imageUrl: answer.imageUrl } })\r\n };\r\n};\r\n\r\nconst actionUploadImageQuestion = (file, optionId) => {\r\n return dispatch => {\r\n dispatch(actionMessageQuestionDetail(null));\r\n uploadFile(dispatch, file, optionId);\r\n };\r\n};\r\n\r\nconst actionMessageQuestion = (message) => {\r\n return {\r\n type: QuestionConstants.MESSAGE_LIST_ACTION_ACTION_TYPE,\r\n messageListAction: message\r\n };\r\n};\r\n\r\nconst actionMessageQuestionDetail = (message) => {\r\n return {\r\n type: QuestionConstants.MESSAGE_ACTION_ACTION_TYPE,\r\n messageAction: message\r\n };\r\n};\r\n\r\nconst actionOrderAnswers = (newOptions) => {\r\n return {\r\n type: QuestionConstants.ORDER_ANSWERS_ACTION_TYPE,\r\n newOptions: newOptions\r\n };\r\n};\r\n\r\nconst actionAddRange = (range) => {\r\n return {\r\n type: QuestionConstants.ADD_RANGE_ACTION_TYPE,\r\n range: range\r\n }\r\n};\r\n\r\nconst actionChangeRangeValue = (rangeKey, field, value) => {\r\n return {\r\n type: QuestionConstants.CHANGE_VALUE_RANGE_ACTION_TYPE,\r\n rangeKey: rangeKey,\r\n field: field,\r\n value: value\r\n };\r\n};\r\n\r\nconst actionDeleteRange = (rangeKey, rangeId) => {\r\n return {\r\n type: QuestionConstants.DELETE_RANGE_ACTION_TYPE,\r\n rangeKey: rangeKey,\r\n rangeId: rangeId\r\n };\r\n};\r\n\r\nexport {\r\n actionGetQuestions,\r\n actionBeginListQuestion,\r\n actionBeginAddQuestion,\r\n actionToggleQuestion,\r\n actionDeleteQuestion,\r\n actionBeginEditQuestion,\r\n actionChangeCategory,\r\n actionChangeValueQuestion,\r\n actionChangeAnswer,\r\n actionChangeFeature,\r\n actionGetLayoutTypes,\r\n actionSaveAddQuestion,\r\n actionSaveEditQuestion,\r\n actionOrderQuestion,\r\n actionLoadQuestion,\r\n actionUploadImageQuestion,\r\n actionMessageQuestion,\r\n actionMessageQuestionDetail,\r\n actionOrderAnswers,\r\n actionAddRange,\r\n actionChangeRangeValue,\r\n actionDeleteRange\r\n};\r\n","import React from 'react';\r\nimport { Alert } from 'reactstrap';\r\n\r\nconst AlertContainer = (props) => {\r\n if (props.alert) {\r\n return (\r\n {props.alert.text}\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default AlertContainer;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container, Alert } from 'reactstrap';\r\nimport './QuestionListContainer.css';\r\nimport '../Admin.css';\r\nimport HeaderAdd from '../header/HeaderAdd';\r\nimport QuestionItem from './QuestionItem';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { SortableContainer, SortableElement } from 'react-sortable-hoc';\r\nimport { Row, Col } from 'reactstrap';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetQuestions, actionBeginListQuestion, actionToggleQuestion, actionDeleteQuestion, actionOrderQuestion, actionLoadQuestion, actionMessageQuestion } from './QuestionAction';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nconst SortableItem = SortableElement(({ value, handleVisible, handleDelete, handleLoad }) => );\r\n\r\nconst SortableList = SortableContainer(({ items, handleVisible, handleDelete, handleLoad }) => {\r\n if (items) {\r\n return (\r\n
\r\n \r\n \r\n {items.map((value, index) => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n});\r\n\r\nclass QuestionListContainer extends Component {\r\n\r\n componentDidMount() {\r\n this.props.beginList();\r\n }\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.QUESTIONS_ADD);\r\n }\r\n\r\n onSortEnd = ({ oldIndex, newIndex }) => {\r\n this.props.order(oldIndex, newIndex, this.props.questions);\r\n };\r\n\r\n changeCategory = (event) => {\r\n this.props.selectCategory(event.target.value);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.props.categories && this.props.categorySelected ?\r\n
\r\n \r\n
\r\n : null\r\n }\r\n \r\n
\r\n {\r\n this.props.questions ?\r\n \r\n : null\r\n }\r\n {\r\n this.props.message ?\r\n {this.props.message}\r\n : null\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n categories: state.category.items,\r\n questions: state.question.items,\r\n categorySelected: state.question.category,\r\n message: state.question.messageList,\r\n messageListAction: state.question.messageListAction\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n beginList: () => dispatch(actionBeginListQuestion()),\r\n selectCategory: (category) => dispatch(actionGetQuestions(category)),\r\n toggle: (questionId) => dispatch(actionToggleQuestion(questionId)),\r\n delete: (questionId, isFromList) => dispatch(actionDeleteQuestion(questionId, isFromList)),\r\n order: (oldIndex, newIndex, oldQuestions) => dispatch(actionOrderQuestion(oldIndex, newIndex, oldQuestions)),\r\n load: (question) => dispatch(actionLoadQuestion(question)),\r\n resetMessage: () => dispatch(actionMessageQuestion(null))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(QuestionListContainer));\r\n","import React, { Component } from 'react';\r\nimport { Col } from 'reactstrap';\r\nimport ReactPaginate from 'react-paginate';\r\nimport './PaginationContainer.css';\r\n\r\nexport default class PaginationContainer extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport PaginationContainer from '../pagination/PaginationContainer';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ListContainer = (props) => {\r\n let listItems = null;\r\n if (props.items && props.Component) {\r\n listItems = props.items.map(item =>\r\n );\r\n }\r\n return (\r\n
\r\n \r\n \r\n {listItems}\r\n \r\n \r\n {\r\n props.hasPagination ? : null\r\n } \r\n
\r\n );\r\n};\r\n\r\nListContainer.propTypes = {\r\n items: PropTypes.array,\r\n Component: PropTypes.elementType,\r\n saveAdd: PropTypes.func,\r\n cancelAdd: PropTypes.func,\r\n saveEdit: PropTypes.func,\r\n delete: PropTypes.func,\r\n parentId: PropTypes.string,\r\n handleFile: PropTypes.func,\r\n pageCount: PropTypes.number,\r\n handlePageClick: PropTypes.func\r\n};\r\n\r\nexport default ListContainer;\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport { withRouter } from 'react-router-dom';\r\nimport BaseItem from '../items/BaseItem';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass ProductItem extends BaseItem {\r\n\r\n componentDidMount() {\r\n this.setState({\r\n id: this.props.item.id,\r\n name: this.props.item.name,\r\n itemIsVisible: this.props.item.isEnabled\r\n });\r\n }\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.PRODUCTS_EDIT_BASE + this.props.item.id);\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n this.props.delete(this.props.item.id, true);\r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.props.handleVisible(this.props.item.id);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.item.sku}\r\n {this.props.item.name}\r\n \r\n \r\n {\r\n this.state.isMouseInside ? : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nProductItem.propTypes = {\r\n item: PropTypes.object\r\n};\r\n\r\nexport default withRouter(ProductItem);","import ErrorsApp from \"../../utils/ErrorsApp\";\r\n\r\nexport default class ProductConstants {\r\n static get BEGIN_LIST_ACTION_TYPE() { return 'product/BEGIN_LIST'; }\r\n static get GET_ALL_ACTION_TYPE() { return 'product/GET_ALL'; }\r\n static get SET_ORDER_BY_ACTION_TYPE() { return 'product/SET_ORDER_BY'; }\r\n static get SET_SEARCH_ACTION_TYPE() { return 'product/SET_SEARCH'; }\r\n static get BEGIN_ADD_ACTION_TYPE() { return 'product/BEGIN_ADD'; }\r\n static get TOGGLE_ACTION_TYPE() { return 'product/TOGGLE'; }\r\n static get DELETE_ACTION_TYPE() { return 'product/DELETE'; }\r\n static get GET_ACTION_TYPE() { return 'product/GET'; }\r\n static get CHANGE_VALUE_ACTION_TYPE() { return 'product/CHANGE_VALUE'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'product/SAVE_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'product/SAVE_EDIT'; }\r\n static get MESSAGE_LIST_ACTION_TYPE() { return 'product/MESSAGE_LIST'; }\r\n static get MESSAGE_LIST_ACTION_ACTION_TYPE() { return 'product/MESSAGE_LIST_ACTION'; }\r\n static get MESSAGE_ACTION_ACTION_TYPE() { return 'product/MESSAGE_ACTION'; }\r\n static get MESSAGE_OPTIONS_ACTION_TYPE() { return 'product/MESSAGE_OPTIONS'; }\r\n static get OPEN_OPTIONS_ACTION_TYPE() { return 'product/OPEN_OPTIONS'; }\r\n static get CLOSE_OPTIONS_ACTION_TYPE() { return 'product/CLOSE_OPTIONS'; }\r\n static get UPDATE_OPTION_ACTION_TYPE() { return 'product/UPDATE_OPTION'; }\r\n static get UPDATE_FEATURE_ACTION_TYPE() { return 'product/UPDATE_FEATURE'; }\r\n static get CANCEL_OPTIONS_ACTION_TYPE() { return 'product/CANCEL_OPTIONS'; }\r\n static get GET_ALL_RESUME_ACTION_TYPE() { return 'product/GET_ALL_RESUME'; }\r\n static get MESSAGE_LIST_NOT_FOUND() { return 'No products found'; }\r\n static get MESSAGE_OPTIONS_NOT_FOUND() { return 'No options found'; }\r\n static get MESSAGE_ADD_OK() { return { type: 'success', text: 'Product added succesfully.' }; }\r\n static MESSAGE_ADD_ERROR = (data) => { return { type: 'danger', text: ErrorsApp.GET_MESSAGE_TEXT(data) }; }\r\n static get MESSAGE_UPDATE_OK() { return { type: 'success', text: 'Product updated succesfully.' }; }\r\n static MESSAGE_UPDATE_ERROR = (data) => { return { type: 'danger', text: ErrorsApp.GET_MESSAGE_TEXT(data) }; }\r\n static get MESSAGE_LIST_ADD_ERROR() { return { type: 'danger ', text: 'Error creating product.' }; } \r\n static get PAGE_SIZE() { return 10; }\r\n static get IMAGE() { return 'imageUrl'; }\r\n static get THUMBNAIL() { return 'thumbnailImageUrl'; } \r\n}\r\n","import ProductConstants from \"./ProductConstants\";\r\nimport getAPIPath from '../../utils/PathResolver';\r\n\r\nexport default class ProductApi {\r\n static GetProduct = (id) => { return `${getAPIPath()}product/GetById?id=${id}`; }\r\n static GetProducts = (sortBy, page, pageSize) => {\r\n return `${getAPIPath()}product?page=${page}&pageSize=${pageSize || ProductConstants.PAGE_SIZE}&orderField=${sortBy}`;\r\n }\r\n static SearchProducts = (search, sortBy, page, pageSize) => {\r\n if (search && search.length > 0) {\r\n return `${getAPIPath()}product/Search?name=${search}&page=${page}&pageSize=${pageSize || ProductConstants.PAGE_SIZE}&orderField=${sortBy}`;\r\n } else {\r\n return `${getAPIPath()}product/Search?page=${page}&pageSize=${pageSize || ProductConstants.PAGE_SIZE}&orderField=${sortBy}`;\r\n } \r\n }\r\n static ToggleProduct = (id) => { return `${getAPIPath()}product/Toggle?id=${id}`; }\r\n static DeleteProduct = (id) => { return `${getAPIPath()}product?id=${id}`; }\r\n static get PostProduct() { return `${getAPIPath()}product`; }\r\n static get PutProduct() { return `${getAPIPath()}product`; }\r\n static GetProductsResume = (name, sortBy) => { return `${getAPIPath()}product/GetAllResume?name=${name}&orderField=${sortBy}`; }\r\n}\r\n","import OptionConstants from \"./OptionConstants\";\r\nimport axios from 'axios';\r\nimport OptionModel from './OptionModel';\r\nimport OptionApi from \"./OptionApi\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\nimport arrayMove from 'array-move';\r\nimport { actionOrderAnswers } from \"../questions/QuestionAction\";\r\n\r\nconst getOptions = async (dispatch, featureId, page) => {\r\n try {\r\n const isPaged = Number.isInteger(page);\r\n const response = isPaged ? await axios.get(OptionApi.GetPagedOptions(featureId, page)) : await axios.get(OptionApi.GetOptions(featureId));\r\n if (response.data) {\r\n dispatch({\r\n type: OptionConstants.GET_ALL_ACTION_TYPE,\r\n items: isPaged ? response.data.list : response.data,\r\n totalItems: isPaged ? response.data.totalItems : response.data.length,\r\n totalPages: isPaged ? response.data.totalPages : 1\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: OptionConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n}\r\n\r\nconst saveOption = async (dispatch, option, featureId) => {\r\n try {\r\n const response = await axios.post(OptionApi.PostOption, new OptionModel(option.id, option.name, option.name, featureId));\r\n if (response.data) {\r\n dispatch(actionMessageOption(OptionConstants.MESSAGE_ADD_OK));\r\n dispatch({\r\n type: OptionConstants.SAVE_ADD_ACTION_TYPE,\r\n newOption: response.data\r\n });\r\n } else {\r\n dispatch(actionMessageOption(OptionConstants.MESSAGE_ADD_ERROR));\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageOption(OptionConstants.MESSAGE_ADD_ERROR));\r\n }\r\n};\r\n\r\nconst editOption = async (dispatch, option, featureId) => {\r\n try {\r\n const editedOption = new OptionModel(option.id, option.name, option.name, featureId);\r\n const response = await axios.put(OptionApi.PutOption, editedOption);\r\n if (response.data) {\r\n dispatch(actionMessageOption(OptionConstants.MESSAGE_UPDATE_OK));\r\n dispatch({\r\n type: OptionConstants.SAVE_EDIT_ACTION_TYPE,\r\n editedOption: editedOption\r\n });\r\n } else {\r\n dispatch(actionMessageOption(OptionConstants.MESSAGE_UPDATE_ERROR));\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageOption(OptionConstants.MESSAGE_UPDATE_ERROR));\r\n }\r\n};\r\n\r\nconst deleteOption = async (dispatch, id) => {\r\n try {\r\n const response = await axios.delete(OptionApi.DeleteOption(id));\r\n if (response.data) {\r\n dispatch({\r\n type: OptionConstants.DELETE_ACTION_TYPE,\r\n id: id\r\n });\r\n } else {\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst actionGetOptions = (featureId) => {\r\n return dispatch => {\r\n getOptions(dispatch, featureId);\r\n };\r\n};\r\n\r\nconst actionBeginAddOption = () => {\r\n return {\r\n type: OptionConstants.BEGIN_ADD_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveAddOption = (option, featureId) => {\r\n return dispatch => {\r\n saveOption(dispatch, option, featureId);\r\n };\r\n};\r\n\r\nconst actionCancelAddOption = () => {\r\n return {\r\n type: OptionConstants.CANCEL_ADD_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveEditOption = (option, featureId) => {\r\n return dispatch => {\r\n editOption(dispatch, option, featureId);\r\n };\r\n};\r\n\r\nconst actionDeleteOption = (id) => {\r\n return dispatch => {\r\n deleteOption(dispatch, id);\r\n };\r\n};\r\n\r\nconst actionResetOptions = () => {\r\n return {\r\n type: OptionConstants.RESET_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionMessageOption = (message) => {\r\n return {\r\n type: OptionConstants.MESSAGE_ACTION_TYPE,\r\n message: message\r\n };\r\n};\r\n\r\nconst actionGetOptionsByPage = (featureId, page) => {\r\n return dispatch => {\r\n getOptions(dispatch, featureId, page);\r\n };\r\n};\r\n\r\nconst actionOrderOptions = (oldIndex, newIndex, oldOptions) => {\r\n const newOptions = arrayMove(oldOptions, oldIndex, newIndex);\r\n return dispatch => {\r\n dispatch({\r\n type: OptionConstants.ORDER_ACTION_TYPE,\r\n options: newOptions\r\n });\r\n dispatch(actionOrderAnswers(newOptions));\r\n };\r\n};\r\n\r\nexport {\r\n actionGetOptions,\r\n actionBeginAddOption,\r\n actionSaveAddOption,\r\n actionCancelAddOption,\r\n actionSaveEditOption,\r\n actionDeleteOption,\r\n actionResetOptions,\r\n actionMessageOption,\r\n actionGetOptionsByPage,\r\n actionOrderOptions\r\n};\r\n","export default class ProductSortEnum {\r\n static get SKU() { return 'sku'; }\r\n static get NAME() { return 'name'; }\r\n}\r\n","import ProductConstants from \"./ProductConstants\";\r\nimport ProductApi from \"./ProductApi\";\r\nimport axios from 'axios';\r\nimport CategoryApi from \"../categories/CategoryApi\";\r\nimport CategoryConstants from \"../categories/CategoryConstants\";\r\nimport FeatureApi from \"../features/FeatureApi\";\r\nimport FeatureConstants from \"../features/FeatureConstants\";\r\nimport { actionGetCategories } from \"../categories/CategoryActions\";\r\nimport { actionGetFeatures } from \"../features/FeatureActions\";\r\nimport UploadFile from \"../../utils/UploadFile\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\nimport { actionResetOptions } from \"../options/OptionActions\";\r\nimport { actionSetErrorUploadImage } from \"../uploadImage/UploadImageActions\";\r\nimport ProductSortEnum from \"./ProductSortEnum\";\r\n\r\nconst getProductsResume = async (dispatch, name, pageSize, sortBy) => {\r\n try {\r\n const response = await axios.get(ProductApi.GetProductsResume(name, sortBy));\r\n processGetResponseResume(dispatch, response, pageSize);\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: ProductConstants.GET_ALL_RESUME_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst processGetResponseResume = (dispatch, response, pageSize) => {\r\n if (response.data) {\r\n dispatch({\r\n type: ProductConstants.GET_ALL_RESUME_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null,\r\n totalItems: response.data.length,\r\n totalPages: Math.ceil(response.data.length / pageSize)\r\n });\r\n if (response.data.length > 0) {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: null\r\n });\r\n } else {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: ProductConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: ProductConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n};\r\n\r\nconst getProducts = async (dispatch, sortBy, page, pageSize) => {\r\n try {\r\n const response = await axios.get(ProductApi.GetProducts(sortBy, page, pageSize));\r\n processGetResponse(dispatch, response);\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: ProductConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst processGetResponse = (dispatch, response) => {\r\n if (response.data && response.data.list) {\r\n dispatch({\r\n type: ProductConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.list.length > 0 ? response.data.list : null,\r\n totalItems: response.data.totalItems,\r\n totalPages: response.data.totalPages\r\n });\r\n if (response.data.list.length > 0) {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: null\r\n });\r\n } else {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: ProductConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: ProductConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n};\r\n\r\nconst searchProducts = async (dispatch, search, sortBy, page, pageSize) => {\r\n try {\r\n const response = await axios.get(ProductApi.SearchProducts(search, sortBy, page, pageSize));\r\n processGetResponse(dispatch, response);\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: ProductConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst toggleProduct = async (dispatch, productId) => {\r\n try {\r\n const response = await axios.delete(ProductApi.ToggleProduct(productId));\r\n if (response.data) {\r\n dispatch({\r\n type: ProductConstants.TOGGLE_ACTION_TYPE,\r\n id: productId\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst deleteProduct = async (dispatch, productId, isFromList) => {\r\n try {\r\n const response = await axios.delete(ProductApi.DeleteProduct(productId));\r\n if (response.data) {\r\n dispatch({\r\n type: ProductConstants.DELETE_ACTION_TYPE,\r\n id: productId,\r\n isFromList: isFromList\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst changeCategory = async (dispatch, categoryId) => {\r\n try {\r\n const response = await axios.get(FeatureApi.GetFeatures(categoryId));\r\n if (response.data) {\r\n dispatch({\r\n type: FeatureConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data,\r\n totalItems: response.data.length,\r\n totalPages: 1\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: FeatureConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst getDataToProducts = async (dispatch) => {\r\n try {\r\n const response = await axios.get(CategoryApi.GetCategories);\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null\r\n });\r\n if (response.data.length > 0) {\r\n dispatch(actionChangeValueProduct('category', response.data[0]));\r\n changeCategory(dispatch, response.data[0].id);\r\n }\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst getProduct = async (dispatch, productId) => {\r\n try {\r\n const response = await axios.get(ProductApi.GetProduct(productId));\r\n if (response.data) { \r\n dispatch(actionGetCategories());\r\n dispatch(actionGetFeatures(response.data.category.id));\r\n dispatch(actionSetErrorUploadImage(ProductConstants.IMAGE, response.data.imageUrl && response.data.imageUrl.length > 0 ? false : true));\r\n dispatch(actionSetErrorUploadImage(ProductConstants.THUMBNAIL, response.data.thumbnailImageUrl && response.data.thumbnailImageUrl.length > 0 ? false : true));\r\n dispatch(actionLoadProduct(response.data));\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst uploadFile = async (dispatch, file, property, keyImage) => {\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n const response = await axios.post(UploadFile.Api, formData);\r\n if (response.data) {\r\n dispatch(actionChangeValueProduct(property, response.data.dbPath));\r\n dispatch(dispatch(actionSetErrorUploadImage(keyImage, false)));\r\n } else {\r\n dispatch(dispatch(actionSetErrorUploadImage(keyImage, true)));\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageProductDetail(ProductConstants.MESSAGE_ADD_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst objectToProductRequest = (product, isAdd) => {\r\n const productRequest = {\r\n id: isAdd ? UuidUtil.EMPTY : product.id,\r\n categoryId: product.category.id,\r\n name: product.name,\r\n sku: product.sku,\r\n description: product.description,\r\n shortDescription: product.shortDescription,\r\n url: product.url,\r\n order: product.order,\r\n imageUrl: product.imageUrl,\r\n thumbnailImageUrl: product.thumbnailImageUrl,\r\n isEnabled: true,\r\n productFeatures: isAdd ? mapFeaturesToRequestObject(product.productFeatures) : mapFeaturesToRequestObjectEdit(product.productFeatures, product.originalProductFeatures)\r\n };\r\n return productRequest;\r\n};\r\n\r\nconst mapFeaturesToRequestObjectEdit = (productFeatures, originalProductFeatures) => {\r\n productFeatures = productFeatures.map(pf => {\r\n pf.isEnabled = true;\r\n return pf;\r\n });\r\n\r\n if (originalProductFeatures.length === productFeatures.length && originalProductFeatures.every(original => productFeatures.find(pf => pf.optionId === original.optionId))) {//IF THERE ARE SAME PRODUCT FEATURES\r\n const featureIdList = [...new Set(originalProductFeatures.map(f => f.featureId))];\r\n return featureIdList.map(f => {\r\n return {\r\n featureId: f,\r\n isEnabled: true,\r\n featureOptionList: mapOptionsToRequestObject(originalProductFeatures, f, false)\r\n }\r\n });\r\n } else {//FIND DIFERENCES \r\n let intersection = originalProductFeatures.filter(original => productFeatures.find(pf => pf.optionId === original.optionId) ? true : false);\r\n if (intersection) {//THERE ARE COMMON OPTIONS\r\n let originalMinusNews = originalProductFeatures.filter(original => productFeatures.find(pf => pf.optionId === original.optionId) ? false : true);\r\n originalMinusNews = originalMinusNews.map(original => {\r\n original.isEnabled = false;\r\n return original;\r\n });\r\n originalMinusNews = originalMinusNews.concat(intersection);\r\n let newsMinusOriginal = productFeatures.filter(pf => originalProductFeatures.find(original => original.optionId === pf.optionId) ? false : true);\r\n newsMinusOriginal = newsMinusOriginal.map(minus => {\r\n minus.id = UuidUtil.EMPTY;\r\n return minus;\r\n });\r\n originalMinusNews = originalMinusNews.concat(newsMinusOriginal);\r\n const featureIdList = [...new Set(originalMinusNews.map(f => f.featureId))];\r\n return featureIdList.map(f => {\r\n return {\r\n featureId: f,\r\n isEnabled: originalMinusNews.filter(original => original.featureId === f).every(pf => !pf.isEnabled) ? false : true,\r\n featureOptionList: mapOptionsToRequestObject(originalMinusNews, f, false)\r\n }\r\n });\r\n } else {//new features are totally differemts\r\n originalProductFeatures = originalProductFeatures.map(original => {\r\n original.isEnabled = false;\r\n return original;\r\n });\r\n productFeatures = productFeatures.map(pf => {\r\n pf.id = UuidUtil.EMPTY;\r\n return pf;\r\n });\r\n originalProductFeatures = originalProductFeatures.concat(productFeatures);\r\n const featureIdList = [...new Set(originalProductFeatures.map(f => f.featureId))];\r\n return featureIdList.map(f => {\r\n return {\r\n featureId: f,\r\n isEnabled: originalProductFeatures.filter(original => original.featureId === f).every(pf => !pf.isEnabled) ? false : true,\r\n featureOptionList: mapOptionsToRequestObject(originalProductFeatures, f, false)\r\n }\r\n });\r\n }\r\n }\r\n};\r\n\r\nconst mapFeaturesToRequestObject = (productFeatures) => {\r\n const featureIdList = [...new Set(productFeatures.map(f => f.featureId))];\r\n return featureIdList.map(f => {\r\n return {\r\n featureId: f,\r\n isEnabled: true,\r\n featureOptionList: mapOptionsToRequestObject(productFeatures, f, true)\r\n }\r\n });\r\n};\r\n\r\nconst mapOptionsToRequestObject = (productFeatures, featureId, isAdd) => {\r\n return productFeatures.filter(pf => pf.featureId === featureId).map(o => {\r\n return {\r\n id: o.id,\r\n featureId: o.featureId,\r\n optionId: o.optionId,\r\n isEnabled: isAdd ? true : o.isEnabled\r\n }\r\n });\r\n};\r\n\r\nconst saveProduct = async (dispatch, product) => {\r\n try { \r\n const response = await axios.post(ProductApi.PostProduct, objectToProductRequest(product, true));\r\n if (response.data) {\r\n dispatch(actionMessageProduct(ProductConstants.MESSAGE_ADD_OK));\r\n dispatch({\r\n type: ProductConstants.SAVE_ADD_ACTION_TYPE,\r\n });\r\n } \r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageProductDetail(ProductConstants.MESSAGE_ADD_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n } \r\n};\r\n\r\nconst editProduct = async (dispatch, product) => {\r\n try {\r\n const response = await axios.put(ProductApi.PutProduct, objectToProductRequest(product, false));\r\n if (response.data) {\r\n dispatch(actionMessageProduct(ProductConstants.MESSAGE_UPDATE_OK));\r\n dispatch({\r\n type: ProductConstants.SAVE_EDIT_ACTION_TYPE,\r\n });\r\n } \r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageProductDetail(ProductConstants.MESSAGE_UPDATE_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n } \r\n};\r\n\r\nconst actionGetProducts = (sortBy, page, pageSize) => {\r\n return dispatch => {\r\n dispatch({\r\n type: ProductConstants.SET_ORDER_BY_ACTION_TYPE,\r\n sortBy: sortBy\r\n });\r\n getProducts(dispatch, sortBy, page, pageSize);\r\n };\r\n};\r\n\r\nconst actionBeginListProducts = (sortBy, pageSize) => {\r\n return dispatch => {\r\n dispatch({\r\n type: ProductConstants.BEGIN_LIST_ACTION_TYPE\r\n });\r\n dispatch(actionGetProducts(sortBy, 0, pageSize));\r\n };\r\n};\r\n\r\nconst actionSetSearchProduct = (search) => {\r\n return {\r\n type: ProductConstants.SET_SEARCH_ACTION_TYPE,\r\n search: search\r\n };\r\n};\r\n\r\nconst actionSearchProducts = (search, sortBy, page, pageSize) => {\r\n return dispatch => {\r\n searchProducts(dispatch, search, sortBy, page, pageSize);\r\n };\r\n};\r\n\r\nconst actionToggleProduct = (productId) => {\r\n return dispatch => {\r\n toggleProduct(dispatch, productId);\r\n };\r\n};\r\n\r\nconst actionDeleteProduct = (productId, isFromList) => {\r\n return dispatch => {\r\n deleteProduct(dispatch, productId, isFromList);\r\n };\r\n};\r\n\r\nconst actionBeginAddProduct = () => {\r\n return dispatch => {\r\n dispatch(actionMessageProduct(null));\r\n dispatch({\r\n type: ProductConstants.BEGIN_ADD_ACTION_TYPE\r\n });\r\n getDataToProducts(dispatch);\r\n };\r\n};\r\n\r\nconst actionChangeValueProduct = (propertie, value) => {\r\n return dispatch => {\r\n dispatch({\r\n type: ProductConstants.CHANGE_VALUE_ACTION_TYPE,\r\n propertie: propertie,\r\n value: value\r\n });\r\n };\r\n};\r\n\r\nconst actionChangeCategoryProduct = (categoryId) => {\r\n return dispatch => {\r\n changeCategory(dispatch, categoryId);\r\n };\r\n};\r\n\r\nconst actionBeginEditProduct = (productId) => {\r\n return dispatch => {\r\n dispatch(actionMessageProduct(null));\r\n getProduct(dispatch, productId);\r\n };\r\n};\r\n\r\nconst actionLoadProduct = (product) => {\r\n product.exists = true;\r\n if (!product.url) {\r\n product.url = '';\r\n }\r\n product.originalProductFeatures = product.productFeatures.map(pf => {\r\n pf.isEnabled = true;\r\n return pf;\r\n });\r\n return {\r\n type: ProductConstants.GET_ACTION_TYPE,\r\n product: product\r\n };\r\n};\r\n\r\nconst actionOpenProductOptions = (featureId, options) => {\r\n return {\r\n type: ProductConstants.OPEN_OPTIONS_ACTION_TYPE,\r\n featureSelected: featureId,\r\n options: options\r\n };\r\n};\r\n\r\nconst actionCloseProductOptions = () => {\r\n return dispatch => {\r\n dispatch({ type: ProductConstants.CLOSE_OPTIONS_ACTION_TYPE });\r\n dispatch(actionResetOptions());\r\n };\r\n};\r\n\r\nconst actionUploadThumbnailProduct = (file) => {\r\n return dispatch => {\r\n dispatch(actionMessageProductDetail(null));\r\n uploadFile(dispatch, file, 'thumbnailImageUrl', ProductConstants.THUMBNAIL);\r\n };\r\n};\r\n\r\nconst actionUploadImageProduct = (file) => {\r\n return dispatch => {\r\n dispatch(actionMessageProductDetail(null));\r\n uploadFile(dispatch, file, 'imageUrl', ProductConstants.IMAGE);\r\n };\r\n};\r\n\r\nconst actionUpdateProductFeatureOption = (optionSelected) => {\r\n return {\r\n type: ProductConstants.UPDATE_OPTION_ACTION_TYPE,\r\n optionSelected: optionSelected\r\n };\r\n};\r\n\r\nconst actionUpdateProductFeature = (featureSelected) => {\r\n return {\r\n type: ProductConstants.UPDATE_FEATURE_ACTION_TYPE,\r\n featureSelected: featureSelected\r\n };\r\n};\r\n\r\nconst actionCancelProductFeatureOption = () => {\r\n return {\r\n type: ProductConstants.CANCEL_OPTIONS_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSaveAddProduct = (product) => {\r\n return dispatch => {\r\n dispatch(actionMessageProductDetail(null));\r\n saveProduct(dispatch, product);\r\n };\r\n};\r\n\r\nconst actionSaveEditProduct = (product) => {\r\n return dispatch => {\r\n dispatch(actionMessageProductDetail(null));\r\n editProduct(dispatch, product);\r\n };\r\n};\r\n\r\nconst actionMessageProduct = (message) => {\r\n return {\r\n type: ProductConstants.MESSAGE_LIST_ACTION_ACTION_TYPE,\r\n messageListAction: message\r\n };\r\n};\r\n\r\nconst actionMessageProductDetail = (message) => {\r\n return {\r\n type: ProductConstants.MESSAGE_ACTION_ACTION_TYPE,\r\n messageAction: message\r\n };\r\n};\r\n\r\nconst actionGetProductsResume = (name, pageSize, sortBy) => {\r\n return dispatch => {\r\n dispatch({\r\n type: ProductConstants.SET_ORDER_BY_ACTION_TYPE,\r\n sortBy: sortBy\r\n });\r\n getProductsResume(dispatch, name, pageSize, sortBy);\r\n };\r\n};\r\n\r\nconst actionResetOrderByProduct = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: ProductConstants.SET_ORDER_BY_ACTION_TYPE,\r\n sortBy: ProductSortEnum.SKU\r\n });\r\n };\r\n};\r\n\r\nconst actionResetMessageList = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: ProductConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: null\r\n });\r\n };\r\n};\r\n\r\nexport {\r\n actionBeginListProducts,\r\n actionGetProducts,\r\n actionSetSearchProduct,\r\n actionSearchProducts,\r\n actionToggleProduct,\r\n actionDeleteProduct,\r\n actionBeginAddProduct,\r\n actionChangeValueProduct,\r\n actionChangeCategoryProduct,\r\n actionBeginEditProduct,\r\n actionOpenProductOptions,\r\n actionCloseProductOptions,\r\n actionUploadThumbnailProduct,\r\n actionUploadImageProduct,\r\n actionUpdateProductFeatureOption,\r\n actionUpdateProductFeature,\r\n actionCancelProductFeatureOption,\r\n actionSaveAddProduct,\r\n actionSaveEditProduct,\r\n actionMessageProduct,\r\n actionMessageProductDetail,\r\n actionGetProductsResume,\r\n actionResetOrderByProduct,\r\n actionResetMessageList\r\n};\r\n","import React from 'react';\r\nimport { Row, Col, Input } from 'reactstrap';\r\nimport Search from '../../images/Shape.png';\r\nimport ProductSortEnum from './ProductSortEnum';\r\n\r\nconst ProductFilter = (props) => {\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};\r\n\r\nexport default ProductFilter;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container, Alert } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport './ProductListContainer.css';\r\nimport { withRouter } from 'react-router-dom';\r\nimport HeaderAdd from '../header/HeaderAdd';\r\nimport ListContainer from '../list/ListContainer';\r\nimport ProductItem from './ProductItem';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionBeginListProducts, actionGetProducts, actionSetSearchProduct, actionSearchProducts, actionToggleProduct, actionDeleteProduct, actionMessageProduct, actionResetOrderByProduct, actionResetMessageList } from './ProductAction';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\nimport ProductFilter from './ProductFilter';\r\nimport ProductSortEnum from './ProductSortEnum';\r\n\r\nclass ProductListContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentPage: 0\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.changeSearch('');\r\n this.props.beginList(ProductSortEnum.SKU);\r\n }\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.PRODUCTS_ADD);\r\n };\r\n\r\n handleSort = (event) => {\r\n this.props.getProducts(event.target.value, this.state.currentPage);\r\n };\r\n\r\n handleChangeSearch = (event) => {\r\n this.props.changeSearch(event.target.value);\r\n };\r\n\r\n handleSearchEnter = (event) => {\r\n if (event.key === 'Enter') {\r\n this.props.searchByName(this.props.search, this.props.sortBy, this.state.currentPage);\r\n }\r\n };\r\n\r\n handleSearchButton = (event) => {\r\n event.preventDefault();\r\n this.props.searchByName(this.props.search, this.props.sortBy, this.state.currentPage);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessageList();\r\n this.props.changeSearch('');\r\n this.props.resetMessage();\r\n this.props.resetSort();\r\n }\r\n\r\n handlePageClick = (data) => {\r\n this.props.searchByName(this.props.search, this.props.sortBy, data.selected);\r\n this.setState({ currentPage: data.selected });\r\n };\r\n\r\n render() { \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.props.products ?\r\n \r\n : null\r\n }\r\n {\r\n this.props.message ?\r\n {this.props.message}\r\n : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n products: state.product.items,\r\n message: state.product.messageList,\r\n sortBy: state.product.sortBy,\r\n search: state.product.search,\r\n pageCount: state.product.totalPages,\r\n messageListAction: state.product.messageListAction\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n beginList: (sortBy) => dispatch(actionBeginListProducts(sortBy)),\r\n getProducts: (sortBy, page) => dispatch(actionGetProducts(sortBy, page)),\r\n changeSearch: (search) => dispatch(actionSetSearchProduct(search)),\r\n searchByName: (search, sortBy, page) => dispatch(actionSearchProducts(search, sortBy, page)),\r\n toggle: (productId) => dispatch(actionToggleProduct(productId)),\r\n delete: (productId, isFromList) => dispatch(actionDeleteProduct(productId, isFromList)),\r\n resetMessage: () => dispatch(actionMessageProduct(null)),\r\n resetSort: () => dispatch(actionResetOrderByProduct()),\r\n resetMessageList: () => dispatch(actionResetMessageList())\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ProductListContainer));\r\n","import React from 'react';\r\nimport { Row, Col, Input } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport BaseItem from '../items/BaseItem';\r\nimport { withRouter } from 'react-router-dom';\r\nimport BaseModel from '../../models/BaseModel';\r\nimport uuid from 'uuid/v1';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass ItemParent extends BaseItem {\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n const isEditing = this.state.isEditing;\r\n const name = this.state.name;\r\n this.setState({ isEditing: !isEditing, previousName: name });\r\n }\r\n\r\n continueDetails = () => {\r\n if (!this.state.isEditing && this.state.pathRedirect) {\r\n this.props.history.push(this.state.pathRedirect + this.state.id);\r\n }\r\n }\r\n\r\n handleSave = (event) => {\r\n event.preventDefault();\r\n const isEditing = this.state.isEditing;\r\n if (this.state.id === '') {\r\n const tempid = uuid().toString();\r\n this.setState({ isEditing: !isEditing, id: tempid });\r\n this.props.saveAdd(new BaseModel(tempid, this.state.name), this.props.parentId);\r\n } else {\r\n this.setState({ isEditing: !isEditing });\r\n this.props.saveEdit(new BaseModel(this.state.id, this.state.name), this.props.parentId);\r\n }\r\n }\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n this.props.delete(this.state.id);\r\n }\r\n\r\n handleCancel = (event) => {\r\n event.preventDefault(); \r\n if (this.state.id === '') {\r\n this.props.cancelAdd();\r\n } else {\r\n const isEditing = this.state.isEditing;\r\n const previuos = this.state.previousName;\r\n this.setState({ isEditing: !isEditing, name: previuos });\r\n }\r\n }\r\n\r\n handleChangeItem = (event) => {\r\n this.setState({ name: event.target.value });\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n id: this.props.item.id,\r\n name: this.props.item.name,\r\n previousName: this.props.item.name,\r\n isEditing: this.props.item.id === '',\r\n pathRedirect: this.props.path\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\r\n this.state.isEditing ? : this.state.name\r\n }\r\n \r\n \r\n \r\n {\r\n this.state.isMouseInside ?\r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nItemParent.propTypes = {\r\n placeholderText: PropTypes.string,\r\n item: PropTypes.object,\r\n path: PropTypes.string,\r\n saveAdd: PropTypes.func,\r\n cancelAdd: PropTypes.func,\r\n saveEdit: PropTypes.func,\r\n delete: PropTypes.func\r\n};\r\n\r\nexport default withRouter(ItemParent);\r\n","import React from 'react';\r\nimport ItemParent from '../items/ItemParent';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst CategoryItem = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nCategoryItem.propTypes = {\r\n item: PropTypes.object,\r\n path: PropTypes.string,\r\n saveAdd: PropTypes.func,\r\n cancelAdd: PropTypes.func,\r\n saveEdit: PropTypes.func,\r\n delete: PropTypes.func\r\n};\r\n\r\nexport default CategoryItem;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport HeaderAdd from '../header/HeaderAdd';\r\nimport ListContainer from '../list/ListContainer';\r\nimport CategoryItem from './CategoryItem';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetCategories, actionBeginAddCategory, actionSaveAddCategory, actionCancelAddCategory, actionSaveEditCategory, actionDeleteCategory, actionMessageCategory } from './CategoryActions';\r\nimport BaseModel from '../../models/BaseModel';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nclass CategoryContainer extends Component { \r\n\r\n componentDidMount() {\r\n this.props.getCategorires();\r\n }\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n const newItem = this.props.categories.find(category => BaseModel.isEmpty(category));\r\n if (newItem) {\r\n console.log('pending to save');//TODO - show a message to indicate a pending item to save\r\n } else {\r\n this.props.beginAdd();\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\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\nconst mapStateToProps = state => {\r\n return {\r\n categories: state.category.items,\r\n message: state.category.message\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getCategorires: () => dispatch(actionGetCategories()),\r\n beginAdd: () => dispatch(actionBeginAddCategory()),\r\n saveAdd: (newCategory) => dispatch(actionSaveAddCategory(newCategory)),\r\n cancelAdd: () => dispatch(actionCancelAddCategory()),\r\n saveEdit: (editedCategory) => dispatch(actionSaveEditCategory(editedCategory)),\r\n delete: (id) => dispatch(actionDeleteCategory(id)),\r\n resetMessage: () => dispatch(actionMessageCategory(null))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CategoryContainer);\r\n","import React from 'react';\r\nimport { Container, Row, Col, Button } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst HeaderSaveSimple = (props) => {\r\n return (\r\n \r\n \r\n \r\n

{props.title}

\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nHeaderSaveSimple.propTypes = {\r\n title: PropTypes.string,\r\n handleSave: PropTypes.func\r\n};\r\n\r\nexport default HeaderSaveSimple;\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport default class LayoutApi {\r\n static get GetLayout() { return `${getAPIPath()}layout`; }\r\n static GetLayoutByCategoryId = (category) => { return `${getAPIPath()}layout/GetByCategoryId?categoryId=${category}`; }\r\n static get PostLayout() { return `${getAPIPath()}layout`; }\r\n static get PutLayout() { return `${getAPIPath()}layout`; }\r\n}\r\n","export default class LayoutConstants {\r\n static get GET_ACTION_TYPE() { return 'layout/GET'; }\r\n static get CHANGE_VALUE_ACTION_TYPE() { return 'layout/CHANGE_VALUE'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'layout/SAVE_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'layout/SAVE_EDIT'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'layout/MESSAGE'; }\r\n static get MESSAGE_LAYOUT_OK() { return { type: 'success', text: 'Layout saved succesfully.' }; }\r\n static get MESSAGE_LAYOUT_ERROR() { return { type: 'danger', text: 'Error saving layout.' }; }\r\n static MESSAGE_LAYOUT_ERROR_IMAGE(data) { return { type: 'danger', text: data }; }\r\n static get IMAGE() { return 'layoutImage'; }\r\n}\r\n","import axios from \"axios\";\r\nimport LayoutApi from \"./LayoutApi\";\r\nimport CategoryApi from \"../categories/CategoryApi\";\r\nimport LayoutConstants from \"./LayoutConstants\";\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\nimport CategoryConstants from \"../categories/CategoryConstants\";\r\nimport UploadFile from \"../../utils/UploadFile\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\nimport { actionSetErrorUploadImage } from \"../uploadImage/UploadImageActions\";\r\n\r\nconst getLayout = async (dispatch) => {\r\n try {\r\n const response = await axios.get(CategoryApi.GetCategories);\r\n if (response.data) {\r\n dispatch({\r\n type: CategoryConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.length > 0 ? response.data : null\r\n });\r\n if (response.data.length > 0) {\r\n dispatch(actionGetLayoutByCategory(response.data[0].id));//TODO - There should be a way to get main category or endpoint get categories in order , ie. first category result is the main one\r\n }\r\n } else {\r\n console.log(\"TODO - server error\");\r\n }\r\n\r\n dispatch(actionSetErrorUploadImage(LayoutConstants.IMAGE, response.data.imageUrl && response.data.imageUrl.length > 0 ? false : true));\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst getLayoutByCategory = async (dispatch, categoryId) => {\r\n try {\r\n const response = await axios.get(LayoutApi.GetLayoutByCategoryId(categoryId));\r\n dispatch({\r\n type: LayoutConstants.GET_ACTION_TYPE,\r\n layout: response.data != \"\" ? response.data : getEmptyLayout(categoryId),\r\n category: categoryId\r\n });\r\n dispatch(actionSetErrorUploadImage(LayoutConstants.IMAGE, response.data != \"\" && response.data.imageUrl && response.data.imageUrl.length > 0 ? false : true));\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst saveLayout = async (dispatch, layout) => {\r\n try {\r\n const response = await axios.post(LayoutApi.PostLayout, layout);\r\n if (response.data) {\r\n dispatch({\r\n type: LayoutConstants.SAVE_ADD_ACTION_TYPE,\r\n id: response.data.id\r\n });\r\n dispatch(actionMessageLayout(LayoutConstants.MESSAGE_LAYOUT_OK));\r\n } else {\r\n dispatch(actionMessageLayout(LayoutConstants.MESSAGE_LAYOUT_ERROR));\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageLayout(LayoutConstants.MESSAGE_LAYOUT_ERROR));\r\n }\r\n};\r\n\r\nconst editLayout = async (dispatch, layout) => {\r\n try {\r\n const response = await axios.put(LayoutApi.PutLayout, layout);\r\n dispatch(actionMessageLayout(response.data ? LayoutConstants.MESSAGE_LAYOUT_OK : LayoutConstants.MESSAGE_LAYOUT_ERROR));\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessageLayout(LayoutConstants.MESSAGE_LAYOUT_ERROR));\r\n }\r\n dispatch({\r\n type: LayoutConstants.SAVE_EDIT_ACTION_TYPE\r\n });\r\n};\r\n\r\nconst uploadFile = async (dispatch, file) => {\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n const response = await axios.post(UploadFile.Api, formData);\r\n if (response.data) {\r\n dispatch(actionChangeValueLayout('imageUrl', response.data.dbPath));\r\n dispatch(actionSetErrorUploadImage(LayoutConstants.IMAGE, false));\r\n } else {\r\n dispatch(actionSetErrorUploadImage(LayoutConstants.IMAGE, true));\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageLayout(LayoutConstants.MESSAGE_LAYOUT_ERROR_IMAGE(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst actionGetLayout = () => {\r\n return dispatch => {\r\n getLayout(dispatch);\r\n };\r\n};\r\n\r\nconst actionGetLayoutByCategory = (category) => {\r\n return dispatch => {\r\n getLayoutByCategory(dispatch, category);\r\n };\r\n};\r\n\r\nconst actionChangeValueLayout = (propertie, value) => {\r\n return dispatch => {\r\n dispatch({\r\n type: LayoutConstants.CHANGE_VALUE_ACTION_TYPE,\r\n propertie: propertie,\r\n value: value\r\n });\r\n };\r\n};\r\n\r\nconst actionSaveAddLayout = (layout) => {\r\n return dispatch => {\r\n saveLayout(dispatch, layout);\r\n };\r\n};\r\n\r\nconst actionSaveEditLayout = (layout) => {\r\n return dispatch => {\r\n editLayout(dispatch, layout);\r\n };\r\n};\r\n\r\nconst actionUploadLayout = (file) => {\r\n return dispatch => {\r\n dispatch(actionMessageLayout(null));\r\n uploadFile(dispatch, file);\r\n };\r\n};\r\n\r\nconst actionMessageLayout = (message) => {\r\n return {\r\n type: LayoutConstants.MESSAGE_ACTION_TYPE,\r\n message: message\r\n };\r\n};\r\n\r\nconst getEmptyLayout = (categoryId) => {\r\n return {\r\n id: UuidUtil.EMPTY, title: \"\", description: \"\", titleResult: \"\", descriptionResult: \"\", discoverMoreResult: \"\", category: { id: categoryId } };\r\n}\r\n\r\nexport { actionGetLayout, actionGetLayoutByCategory, actionChangeValueLayout, actionSaveAddLayout, actionSaveEditLayout, actionUploadLayout, actionMessageLayout };","import React, { Component } from 'react';\r\nimport Upload from '../../images/upload.png';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { actionSetErrorUploadImage } from './UploadImageActions';\r\n\r\nclass UploadImageContainer extends Component {\r\n\r\n handleFile = (event) => {\r\n if (this.props.itemId) {\r\n this.props.handleFile(event.target.files[0], this.props.itemId);\r\n } else {\r\n this.props.handleFile(event.target.files[0]);\r\n }\r\n };\r\n\r\n triggerInputFile = () => this.fileInput.click();\r\n\r\n onErrorImage = (event) => {\r\n this.props.setIsError(this.props.keyImage, true);\r\n };\r\n\r\n handleClose = (event) => {\r\n event.preventDefault(); \r\n this.props.closeImage();\r\n }\r\n\r\n render() {\r\n let isError = getErrorValue(this.props.mapErrors, this.props.keyImage);\r\n return (\r\n
\r\n {\r\n isError\r\n ?
\r\n \"upload\"\r\n Upload\r\n
\r\n :
\r\n {\r\n this.props.showClose\r\n ? \r\n : null\r\n }\r\n \"layout\"\r\n
\r\n }\r\n this.fileInput = fileInput} type=\"file\" name=\"file\" onChange={this.handleFile} accept=\"image/x-png,image/jpeg\" hidden />\r\n
\r\n );\r\n }\r\n}\r\n\r\nUploadImageContainer.propTypes = {\r\n handleFile: PropTypes.func,\r\n imageUrl: PropTypes.string,\r\n mainClass: PropTypes.string,\r\n wrapperClass: PropTypes.string,\r\n imageClass: PropTypes.string,\r\n itemId: PropTypes.string,\r\n keyImage: PropTypes.string,\r\n closeImage: PropTypes.func,\r\n showClose: PropTypes.bool\r\n};\r\n\r\nconst getErrorValue = (mapErrors, key) => {\r\n const value = mapErrors[key];\r\n if (value === undefined || value === null) {\r\n return true;\r\n } else {\r\n return value;\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n mapErrors: state.uploadImage.mapErrors\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n setIsError: (key, isError) => dispatch(actionSetErrorUploadImage(key, isError))\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UploadImageContainer);\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container, Row, Col, TabContent, TabPane, Nav, NavItem, NavLink, FormGroup, Label, Input } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport classnames from 'classnames';\r\nimport HeaderSaveSimple from '../header/HeaderSaveSimple';\r\nimport './LayoutContainer.css';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { actionGetLayout, actionGetLayoutByCategory, actionChangeValueLayout, actionSaveAddLayout, actionSaveEditLayout, actionUploadLayout, actionMessageLayout } from './LayoutActions';\r\nimport UuidUtil from '../../utils/UuidUtil';\r\nimport UploadImageContainer from '../uploadImage/UploadImageContainer';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\nimport LayoutConstants from './LayoutConstants';\r\n\r\n\r\nclass LayoutContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toggle = this.toggle.bind(this);\r\n this.state = {\r\n activeTab: '1'\r\n };\r\n }\r\n\r\n toggle(tab) {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab\r\n });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getLayout();\r\n }\r\n\r\n handleChange = (event) => {\r\n this.props.changeInputValue(event.target.id, event.target.value);\r\n };\r\n\r\n handleSave = (event) => {\r\n event.preventDefault();\r\n if (this.props.layout === \"\" || this.props.layout.id === UuidUtil.EMPTY || this.props.layout.id === '') {\r\n this.props.save(this.props.layout);\r\n } else {\r\n this.props.edit(this.props.layout);\r\n }\r\n };\r\n\r\n changeCategory = (event) => {\r\n this.props.selectCategory(event.target.value);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\r\n this.props.categories && this.props.categorySelected ?\r\n
\r\n \r\n
\r\n : null\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 \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 \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 }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n categories: state.category.items,\r\n categorySelected: state.layout.category,\r\n layout: state.layout.layout,\r\n message: state.layout.message\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getLayout: () => dispatch(actionGetLayout()),\r\n selectCategory: (category) => dispatch(actionGetLayoutByCategory(category)),\r\n changeInputValue: (property, value) => dispatch(actionChangeValueLayout(property, value)),\r\n save: (layout) => dispatch(actionSaveAddLayout(layout)),\r\n edit: (layout) => dispatch(actionSaveEditLayout(layout)),\r\n uploadFile: (file) => dispatch(actionUploadLayout(file)),\r\n resetMessage: () => dispatch(actionMessageLayout(null))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(LayoutContainer));\r\n","import React from 'react';\r\nimport './NavApp.css'\r\n\r\nconst NavApp = (props) => {\r\n return (\r\n
\r\n {props.children}\r\n
\r\n );\r\n}\r\n\r\nexport default NavApp;\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport default class PreviewApi {\r\n static Deploy = (categoryId) => { return `${getAPIPath()}question/Deploy?categoryId=${categoryId}`; }\r\n}\r\n","export default class PreviewConstants {\r\n static get SET_CATEGORY_ACTION_TYPE() { return 'preview/SET_CATEGORY'; }\r\n static get DEPLOY_ACTION_TYPE() { return 'preview/DEPLOY'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'preview/MESSAGE'; }\r\n static get SELECT_OPEN_ACTION_TYPE() { return 'preview/SELECT_OPEN'; }\r\n static get SELECT_CLOSE_ACTION_TYPE() { return 'preview/SELECT_CLOSE'; }\r\n static get MESSAGE_DEPLOY_OK() { return { type: 'success', text: 'Deployed succesfully.' }; }\r\n static get MESSAGE_DEPLOY_ERROR() { return { type: 'danger', text: 'Error deploying.' }; }\r\n static get MESSAGE_NO_QUESTIONS_ERROR() { return { type: 'danger', text: 'No questions found.' }; }\r\n}\r\n","import PreviewApi from \"./PreviewApi\";\r\nimport PreviewConstants from \"./PreviewConstants\";\r\nimport axios from 'axios';\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\n\r\nconst deployPreview = async (dispatch, categoryId) => {\r\n try {\r\n const response = await axios.put(PreviewApi.Deploy(categoryId));\r\n dispatch(actionMessagePreview(response.data ? PreviewConstants.MESSAGE_DEPLOY_OK : PreviewConstants.MESSAGE_DEPLOY_ERROR));\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch(actionMessagePreview(PreviewConstants.MESSAGE_DEPLOY_ERROR));\r\n }\r\n dispatch({\r\n type: PreviewConstants.DEPLOY_ACTION_TYPE\r\n });\r\n};\r\n\r\nconst actionDeployPreview = (categoryId) => {\r\n return dispatch => {\r\n deployPreview(dispatch, categoryId)\r\n };\r\n};\r\n\r\nconst actionMessagePreview = (message) => {\r\n return {\r\n type: PreviewConstants.MESSAGE_ACTION_TYPE,\r\n message: message\r\n };\r\n};\r\n\r\nconst actionOpenPreviewSelect = () => {\r\n return {\r\n type: PreviewConstants.SELECT_OPEN_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionClosePreviewSelect = () => {\r\n return {\r\n type: PreviewConstants.SELECT_CLOSE_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionSetCategoryPreview = (categoryId) => {\r\n return {\r\n type: PreviewConstants.SET_CATEGORY_ACTION_TYPE,\r\n categoryId: categoryId\r\n };\r\n};\r\n\r\nexport { actionDeployPreview, actionMessagePreview, actionOpenPreviewSelect, actionClosePreviewSelect, actionSetCategoryPreview };","class WizardConstants {\r\n static get PREVIEW() { return 'preview'; }\r\n static get CLIENT() { return 'client'; }\r\n static get GET_SETUP_ACTION_TYPE() { return 'wizard/GET_SETUP'; }\r\n static get SET_CATEGORY_ACTION_TYPE() { return 'wizard/SET_CATEGORY'; }\r\n static get GET_QUESTION_ACTION_TYPE() { return 'wizard/GET_QUESTION'; }\r\n static get UPDATE_OPTION_ACTION_TYPE() { return 'wizard/UPDATE_OPTION'; }\r\n static get RESET_SELECTED_ACTION_TYPE() { return 'wizard/RESET_SELECTED'; }\r\n static get GET_NUMBER_PRODUCTS_ACTION_TYPE() { return 'wizard/GET_NUMBER_PRODUCTS'; }\r\n static get MESSAGE_ACTION_TYPE() { return 'wizard/MESSAGE'; }\r\n static get LOADING_ACTION_TYPE() { return 'wizard/LOADING'; }\r\n static get BACK_ACTION_TYPE() { return 'wizard/BACK'; }\r\n static get MESSAGE_ERROR() { return { type: 'danger', text: 'Invalid path.' }; }\r\n}\r\n\r\nexport default WizardConstants;\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport default class WizardApi {\r\n static GetDraft = (categoryId) => { return `${getAPIPath()}question/GetAllForCustomerPortalDraft?categoryId=${categoryId}`; }\r\n static Get = (category) => { return `${getAPIPath()}question/GetAllForCustomerPortal?categoryCode=${category}`; }\r\n static GetNumberProductsPreview = (categoryId) => { return `${getAPIPath()}product/GetNumberProductsByCategoryId?categoryId=${categoryId}`; }\r\n static GetNumberProductsClient = (category, distributorId) => { return `${getAPIPath()}product/GetNumberProductsByCategory?categoryCode=${category}&distributorId=${distributorId}`; }\r\n}\r\n","import WizardConstants from './WizardConstants';\r\nimport WizardApi from './WizardApi';\r\nimport axios from 'axios';\r\nimport { actionErrorAuth } from '../../admin/login/LoginAction';\r\nimport CategoryApi from '../../admin/categories/CategoryApi';\r\n\r\nconst errorData = (dispatch) => {\r\n dispatch({\r\n type: WizardConstants.GET_SETUP_ACTION_TYPE,\r\n data: null\r\n });\r\n dispatch({\r\n type: WizardConstants.MESSAGE_ACTION_TYPE,\r\n message: WizardConstants.MESSAGE_ERROR\r\n });\r\n}\r\n\r\nconst getData = async (dispatch, category, typeSetup) => {\r\n try {\r\n dispatch({\r\n type: WizardConstants.SET_CATEGORY_ACTION_TYPE,\r\n category: category\r\n });\r\n const endpoint = typeSetup === WizardConstants.CLIENT ? WizardApi.Get : WizardApi.GetDraft;\r\n const response = await axios.get(endpoint(category));\r\n if (response.data && response.data.length > 0) {\r\n response.data = response.data.map(question => {\r\n question.options = question.options.map(option => {\r\n option.checked = false;\r\n return option;\r\n });\r\n return question;\r\n }); \r\n dispatch({\r\n type: WizardConstants.GET_SETUP_ACTION_TYPE,\r\n data: response.data\r\n });\r\n dispatch({\r\n type: WizardConstants.MESSAGE_ACTION_TYPE,\r\n message: null\r\n });\r\n } else {\r\n errorData(dispatch);\r\n }\r\n } catch (e) {\r\n if (typeSetup === WizardConstants.PREVIEW) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n errorData(dispatch);\r\n }\r\n};\r\n\r\nconst convertCategoryToQuestion = (categories) => {\r\n let question = [{\r\n id: \"0\",\r\n text: \"Which category do you want to preview?\",\r\n isMultipleChoice: false,\r\n layoutTypeCode: \"CARD\",\r\n }];\r\n question[0].options = categories.map(category => {\r\n return {\r\n id: category.id,\r\n name: category.name,\r\n }\r\n });\r\n return question;\r\n};\r\n\r\nconst getCategoriesToPreview = async (dispatch) => {\r\n try {\r\n const response = await axios.get(CategoryApi.GetCategories);\r\n if (response.data && response.data) {\r\n let questions = convertCategoryToQuestion(response.data); \r\n questions = questions.map(question => {\r\n question.options = question.options.map(option => {\r\n option.checked = false;\r\n return option;\r\n });\r\n return question;\r\n });\r\n dispatch({\r\n type: WizardConstants.GET_SETUP_ACTION_TYPE,\r\n data: questions\r\n });\r\n dispatch({\r\n type: WizardConstants.MESSAGE_ACTION_TYPE,\r\n message: null\r\n });\r\n dispatch(actionGetQuestion(0));\r\n } else {\r\n dispatch({\r\n type: WizardConstants.GET_SETUP_ACTION_TYPE,\r\n data: null\r\n });\r\n }\r\n } catch (e) {\r\n dispatch({\r\n type: WizardConstants.GET_SETUP_ACTION_TYPE,\r\n data: null\r\n });\r\n }\r\n};\r\n\r\nconst getNumberProductsEndpoint = (typeSetup, category, distributorId) => {\r\n if (typeSetup === WizardConstants.CLIENT) {\r\n return WizardApi.GetNumberProductsClient(category, distributorId);\r\n } else {\r\n return WizardApi.GetNumberProductsPreview(category);\r\n }\r\n}\r\n\r\nconst getNumberProducts = async (dispatch, category, typeSetup, distributorId) => {\r\n try {\r\n const response = await axios.get(getNumberProductsEndpoint(typeSetup, category, distributorId));\r\n if (response.data) {\r\n dispatch({\r\n type: WizardConstants.GET_NUMBER_PRODUCTS_ACTION_TYPE,\r\n numberProducts: response.data\r\n });\r\n } \r\n } catch (e) {\r\n console.log('TODO-SERVER', e.message);\r\n }\r\n};\r\n\r\nconst actionGetSetup = (category, typeSetup) => {\r\n return dispatch => {\r\n dispatch({\r\n type: WizardConstants.LOADING_ACTION_TYPE\r\n });\r\n getData(dispatch, category, typeSetup);\r\n };\r\n};\r\n\r\nconst actionGetQuestion = (index) => {\r\n return {\r\n type: WizardConstants.GET_QUESTION_ACTION_TYPE,\r\n index: index\r\n };\r\n};\r\n\r\nconst actionUpdateOption = (optionId, isChecked) => {\r\n return {\r\n type: WizardConstants.UPDATE_OPTION_ACTION_TYPE,\r\n optionId: optionId,\r\n isChecked: isChecked\r\n };\r\n};\r\n\r\nconst actionResetWizardSelected = () => {\r\n return {\r\n type: WizardConstants.RESET_SELECTED_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionGetCategoriesToPreview = () => {\r\n return dispatch => {\r\n getCategoriesToPreview(dispatch);\r\n };\r\n};\r\n\r\nconst actionGetNumberProducts = (category, typeSetup, distributorId) => {\r\n return dispatch => {\r\n getNumberProducts(dispatch, category, typeSetup, distributorId);\r\n };\r\n};\r\n\r\nconst actionBackWizard = (indexBack) => {\r\n return dispatch => { \r\n dispatch({\r\n type: WizardConstants.BACK_ACTION_TYPE,\r\n indexBack: indexBack\r\n });\r\n };\r\n};\r\n\r\nexport { actionGetSetup, actionGetQuestion, actionUpdateOption, actionResetWizardSelected, actionGetCategoriesToPreview, actionGetNumberProducts, actionBackWizard };\r\n","export default class HelperConstants {\r\n static get OPEN_ACTION_TYPE() { return 'helper/OPEN'; }\r\n static get CLOSE_ACTION_TYPE() { return 'helper/CLOSE'; }\r\n}\r\n","import React from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst HelperButton = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nHelperButton.propTypes = {\r\n className: PropTypes.string,\r\n handleClick: PropTypes.func,\r\n image: PropTypes.string\r\n};\r\n\r\nexport default HelperButton;\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { Row, Col } from 'reactstrap';\r\nimport { actionCloseHelper } from './HelperActions';\r\nimport { connect } from 'react-redux';\r\nimport './HelperContainer.css'\r\nimport HelperButton from './HelperButton';\r\nimport PropTypes from 'prop-types';\r\n\r\nModal.setAppElement('#root');\r\n\r\nconst HelperContainer = (props) => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n

{props.title}

\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nHelperContainer.propTypes = {\r\n modalIsOpen: PropTypes.bool, \r\n closeHelper: PropTypes.func,\r\n title: PropTypes.string,\r\n text: PropTypes.string\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n modalIsOpen: state.helper.modalIsOpen\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n closeHelper: () => dispatch(actionCloseHelper())\r\n }\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(HelperContainer);\r\n","import HelperConstants from \"./HelperConstants\";\r\n\r\nconst actionOpenHelper = () => {\r\n return {\r\n type: HelperConstants.OPEN_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionCloseHelper = () => {\r\n return {\r\n type: HelperConstants.CLOSE_ACTION_TYPE\r\n };\r\n};\r\n\r\nexport { actionOpenHelper, actionCloseHelper };\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst OptionList = (props) => {\r\n let listItems = null;\r\n if (props.items && props.Component) {\r\n listItems = props.items.map(item =>\r\n );\r\n }\r\n\r\n return (\r\n \r\n {listItems} \r\n \r\n );\r\n};\r\n\r\nOptionList.propTypes = {\r\n items: PropTypes.array,\r\n Component: PropTypes.elementType,\r\n updateOption: PropTypes.func,\r\n className: PropTypes.string\r\n};\r\n\r\nexport default OptionList;\r\n","import { Component } from 'react';\r\n\r\nclass OptionBase extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isChecked: this.props.checked,\r\n id: this.props.id\r\n };\r\n }\r\n\r\n handleCheck = (event) => {\r\n event.preventDefault();\r\n const previousIsChecked = this.props.checked;\r\n this.setState({ isChecked: !previousIsChecked });\r\n this.props.updateOption(this.props.id, !previousIsChecked);\r\n };\r\n}\r\n\r\nexport default OptionBase;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport Check from '../../images/check_rounded.png';\r\nimport classnames from 'classnames';\r\nimport OptionBase from './OptionBase';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass OptionCard extends OptionBase { \r\n render() {\r\n return (\r\n \r\n
\r\n \"active\"\r\n
\r\n
\r\n {this.props.text}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nOptionCard.propTypes = {\r\n text: PropTypes.string\r\n};\r\n\r\nexport default OptionCard;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport Check from '../../images/check_rounded.png';\r\nimport classnames from 'classnames';\r\nimport OptionBase from './OptionBase';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass OptionGrid extends OptionBase {\r\n render() {\r\n return (\r\n \r\n
\r\n \"active\"\r\n
\r\n
\r\n {this.props.text}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nOptionGrid.propTypes = {\r\n text: PropTypes.string\r\n};\r\n\r\nexport default OptionGrid;\r\n","import React from 'react';\r\nimport { Container, Row, Col } from 'reactstrap';\r\nimport Check from '../../images/check_rounded.png';\r\nimport classnames from 'classnames';\r\nimport OptionBase from './OptionBase';\r\nimport PropTypes from 'prop-types';\r\nimport NOT_FOUND from '../../images/not-found-icon.jpg';\r\n\r\nclass OptionIcon extends OptionBase {\r\n addDefaultSrc = (ev) => {\r\n ev.target.src = NOT_FOUND;\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n \"active\"\r\n
\r\n \r\n \"icon\"\r\n {this.props.text}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nOptionIcon.propTypes = {\r\n text: PropTypes.string,\r\n imageUrl: PropTypes.string\r\n};\r\n\r\nexport default OptionIcon;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport Check from '../../images/check_rounded.png';\r\nimport classnames from 'classnames';\r\nimport OptionBase from './OptionBase';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass OptionPlain extends OptionBase {\r\n render() {\r\n return (\r\n \r\n
\r\n \"active\"\r\n
\r\n
\r\n {this.props.text}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nOptionPlain.propTypes = {\r\n text: PropTypes.string\r\n};\r\n\r\nexport default OptionPlain;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst QuestionMessage = (props) => {\r\n if (props.isMultipleChoice) {\r\n return (\r\n {props.message}\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nQuestionMessage.propTypes = {\r\n message: PropTypes.string,\r\n isMultipleChoice: PropTypes.bool\r\n};\r\n\r\nexport default QuestionMessage;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport HelperContainer from '../helper/HelperContainer';\r\nimport OptionList from '../options/OptionsList';\r\nimport OptionCard from '../options/OptionCard';\r\nimport OptionGrid from '../options/OptionGrid';\r\nimport OptionIcon from '../options/OptionIcon';\r\nimport OptionPlain from '../options/OptionPlain';\r\nimport QuestionMessage from './QuestionMessage';\r\nimport PropTypes from 'prop-types';\r\nimport TypeLayoutEnum from '../../models/TypeLayoutEnum';\r\n\r\nconst QuestionContainer = (props) => {\r\n const layoutSetup = getLayoutSetup(props.data.layoutTypeCode);\r\n if (layoutSetup) {\r\n return (\r\n \r\n \r\n

{props.data.text}

\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nQuestionContainer.propTypes = {\r\n data: PropTypes.object,\r\n updateOption: PropTypes.func\r\n};\r\n\r\nconst getLayoutSetup = (typeLayout) => {\r\n switch (typeLayout) {\r\n case TypeLayoutEnum.CARD:\r\n return {\r\n component: OptionCard,\r\n styles: 'wizard__layout wizard__layout--card'\r\n };\r\n case TypeLayoutEnum.BOX:\r\n return {\r\n component: OptionGrid,\r\n styles: 'wizard__layout wizard__layout--grid'\r\n };\r\n case TypeLayoutEnum.ICON:\r\n return {\r\n component: OptionIcon,\r\n styles: 'wizard__layout wizard__layout--icon'\r\n };\r\n case TypeLayoutEnum.PLAIN:\r\n return {\r\n component: OptionPlain,\r\n styles: 'wizard__layout wizard__layout--plain'\r\n };\r\n case TypeLayoutEnum.RANGE:\r\n return {\r\n component: OptionGrid,\r\n styles: 'wizard__layout wizard__layout--grid'\r\n };\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport default QuestionContainer;\r\n","import React, { Component } from 'react';\r\nimport Modal from 'react-modal';\r\nimport { Container, Button, Row, Col} from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport { actionClosePreviewSelect, actionSetCategoryPreview } from './PreviewActions';\r\nimport { actionGetCategoriesToPreview, actionResetWizardSelected, actionUpdateOption } from '../../client/wizard/WizardActions';\r\nimport QuestionContainer from '../../client/question/QuestionContainer';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nModal.setAppElement('#root');\r\n\r\nclass PreviewSelectModal extends Component { \r\n handleClose = () => {\r\n this.props.close();\r\n this.props.reset();\r\n };\r\n\r\n handleContinue = () => {\r\n if (this.props.question && this.props.question.options) {\r\n const category = this.props.question.options.find(option => option.checked);\r\n if (category && category.id) {\r\n this.handleClose();\r\n this.props.selectCategory(category.id)\r\n this.props.history.push(PathsApp.PREVIEW_ROOT);\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.question ? : null}\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\nconst mapStateToProps = state => {\r\n return {\r\n modalIsOpen: state.preview.modalIsOpen,\r\n categories: state.category.items,\r\n question: state.wizard.currentQuestion\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n close: () => dispatch(actionClosePreviewSelect()),\r\n getCategories: () => dispatch(actionGetCategoriesToPreview()),\r\n reset: () => dispatch(actionResetWizardSelected()),\r\n updateOption: (optionId, isChecked) => dispatch(actionUpdateOption(optionId, isChecked)),\r\n selectCategory: (categoryId) => dispatch(actionSetCategoryPreview(categoryId))\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(PreviewSelectModal));\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Collapse, Button, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { NavLink as RRNavLink } from 'react-router-dom';\r\nimport './NavAdmin.css';\r\nimport NavApp from '../../nav/NavApp';\r\nimport UserProfile from '../../images/profile-def.png';\r\nimport Logo from '../../images/Netgear_Business2x.png';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionLogout } from '../login/LoginAction';\r\nimport { actionOpenPreviewSelect } from '../preview/PreviewActions';\r\nimport PreviewSelectModal from '../preview/PreviewSelectModal';\r\n\r\nclass NavAdmin extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true\r\n };\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n handlePreview = (event) => {\r\n event.preventDefault();\r\n this.props.openPreviewSelect();\r\n };\r\n\r\n handleLogout = (event) => {\r\n event.preventDefault();\r\n this.props.logout();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \"logo\"\r\n \r\n \r\n \r\n
    \r\n \r\n Questions\r\n \r\n \r\n Products\r\n \r\n \r\n Categories\r\n \r\n \r\n Layout\r\n \r\n \r\n Distributors\r\n \r\n
\r\n \r\n \"profile\"\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n logout: () => dispatch(actionLogout()),\r\n openPreviewSelect: () => dispatch(actionOpenPreviewSelect())\r\n };\r\n};\r\n\r\nexport default withRouter(connect(null, mapDispatchToProps)(NavAdmin));\r\n","import React from 'react';\r\nimport NavAdmin from '../nav/NavAdmin';\r\nimport { Container } from 'reactstrap';\r\nimport './MasterAdmin.css';\r\n\r\nconst MasterAdmin = (props) => {\r\n return (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MasterAdmin;\r\n","import React, { Fragment } from 'react';\r\n\r\nconst MasterLogin = (props) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport default MasterLogin;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport './MasterPreview.css'\r\n\r\nconst MasterPreview = (props) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport default MasterPreview;\r\n","import React from 'react';\r\nimport { Route } from 'react-router-dom';\r\n\r\nconst AppRoute = ({ component: Component, layout: Layout, ...rest }) => (\r\n (\r\n \r\n \r\n \r\n )} />\r\n);\r\n\r\nexport default AppRoute;","import React, { Component } from 'react';\r\nimport { Container, Button, Form, FormGroup, Label, Input } from 'reactstrap';\r\nimport './LoginContainer.css';\r\nimport Logo from '../../images/Netgear_Business2x.png';\r\nimport '../Admin.css';\r\nimport { connect } from 'react-redux';\r\nimport { actionAuthenticate, actionMessageAuthentication } from './LoginAction';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nclass LoginContainer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n username: '',\r\n password: ''\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n event.preventDefault();\r\n this.props.authenticate(this.state.username, this.state.password);\r\n };\r\n\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\r\n return ( \r\n \r\n
\r\n \"logo\"\r\n
\r\n \r\n
\r\n
\r\n

Log In

\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\r\nconst mapStateToProps = state => {\r\n return {\r\n user: state.login.user,\r\n message: state.login.errorMessage\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n authenticate: (username, password) => dispatch(actionAuthenticate(username, password)),\r\n resetMessage: () => dispatch(actionMessageAuthentication(null))\r\n }\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginContainer);","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport BaseItem from '../items/BaseItem';\r\nimport { connect } from 'react-redux';\r\nimport { actionOpenProductOptions, actionUpdateProductFeature } from './ProductAction';\r\nimport { actionGetOptions } from '../options/OptionActions';\r\n\r\nclass ProductFeatureItem extends BaseItem{\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n this.props.getOptions(this.props.item.featureCode);\r\n this.props.openOptions(this.props.item.featureCode, this.props.item.options); \r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.props.updateFeature(this.props.item.featureCode);\r\n };\r\n\r\n resumeOptions = () => {\r\n return this.props.item.options.map(o => o.optionName).join();\r\n };\r\n\r\n render() {\r\n const resume = this.resumeOptions();\r\n return (\r\n \r\n \r\n
{this.props.item.featureName}
\r\n
{resume}
\r\n \r\n \r\n \r\n {\r\n this.state.isMouseInside ? : null\r\n }\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nProductFeatureItem.propTypes = {\r\n item: PropTypes.object\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n openOptions: (featureId, options) => dispatch(actionOpenProductOptions(featureId, options)),\r\n getOptions: (featureId) => dispatch(actionGetOptions(featureId)),\r\n updateFeature: (featureId) => dispatch(actionUpdateProductFeature(featureId))\r\n }\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(ProductFeatureItem);\r\n","import React, { Fragment } from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ButtonModal = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nButtonModal.propTypes = {\r\n confirmText: PropTypes.string,\r\n cancelText: PropTypes.string,\r\n confirm: PropTypes.func,\r\n cancel: PropTypes.func\r\n};\r\n\r\nexport default ButtonModal;\r\n","import React, { Component } from 'react';\r\nimport Modal from 'react-modal';\r\nimport { Row, Col, CustomInput, ListGroup, ListGroupItem } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport { actionCloseProductOptions, actionUpdateProductFeatureOption, actionCancelProductFeatureOption } from './ProductAction';\r\nimport ButtonModal from '../buttons/ButtonModal';\r\n\r\nModal.setAppElement('#root');\r\n\r\nclass ProductOptions extends Component {\r\n\r\n handleChangeOption = (event) => {\r\n this.props.updateOption(this.props.optionsStore.find(o => o.id === event.target.id));\r\n };\r\n\r\n handleCancel = () => { \r\n this.props.closeOptions();\r\n this.props.cancelOptions();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n

{this.props.featureName}

\r\n
\r\n
\r\n \r\n {\r\n this.props.options ?\r\n this.props.options.map(option => )\r\n : null\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\nconst mapOptions = (options, optionsSelected) => {\r\n if (options) { \r\n return options.map(o => {\r\n const optionSelected = optionsSelected.find(os => os.optionId === o.id);\r\n if (optionSelected) {\r\n return { id: o.id, name: o.name, checked: true };\r\n } else {\r\n return { id: o.id, name: o.name, checked: false };\r\n }\r\n });\r\n } else {\r\n return [];\r\n }\r\n};\r\n\r\nconst getFeatureName = (features, featureSelected) => {\r\n let featureName = '';\r\n if (features) {\r\n const feature = features.find(pf => pf.id === featureSelected);\r\n if (feature) {\r\n featureName = feature.name;\r\n }\r\n }\r\n return featureName;\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n modalIsOpen: state.product.modalIsOpen,\r\n optionsStore: state.option.items,\r\n featureName: getFeatureName(state.feature.items, state.product.featureSelected),\r\n options: mapOptions(state.option.items, state.product.selected.productFeatures)\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n closeOptions: () => dispatch(actionCloseProductOptions()),\r\n updateOption: (option) => dispatch(actionUpdateProductFeatureOption(option)),\r\n cancelOptions: () => dispatch(actionCancelProductFeatureOption())\r\n }\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ProductOptions);\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ProductFeatureItem from './ProductFeatureItem';\r\nimport PropTypes from 'prop-types';\r\nimport ProductOptions from './ProductOptions';\r\n\r\nconst ProductFeatures = (props) => {\r\n let featureItems = null;\r\n if (props.items) {\r\n featureItems = props.items.map(item => );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {featureItems}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nProductFeatures.propTypes = {\r\n items: PropTypes.array\r\n};\r\n\r\nexport default ProductFeatures;\r\n","import React from 'react';\r\nimport { Col, Button } from 'reactstrap';\r\nimport Trash from '../../images/twotone-delete-24px.png';\r\nimport View from '../../images/View.png';\r\nimport ViewDisabled from '../../images/View_disabled.png';\r\nimport './ButtonGroup.css';\r\nimport './ButtonGroupDetail.css';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ButtonGroupDetail = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nButtonGroupDetail.propTypes = {\r\n handleVisible: PropTypes.func,\r\n isVisible: PropTypes.bool\r\n};\r\n\r\nexport default ButtonGroupDetail;","import React from 'react';\r\nimport { Container, Row, Col } from 'reactstrap';\r\nimport ButtonGroupDetail from '../buttons/ButtonGroupDetail';\r\nimport Back from '../../images/chevLeft.png';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst HeaderSave = (props) => {\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n

{props.title}

\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nHeaderSave.propTypes = {\r\n title: PropTypes.string,\r\n isVisible: PropTypes.bool,\r\n handleVisible: PropTypes.func,\r\n handleGetBack: PropTypes.func\r\n};\r\n\r\nexport default HeaderSave;\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nexport default class ProductModel extends BaseModel {\r\n constructor(id, name, sku, category, description, shortDescription, url, imageUrl, thumbnailImageUrl, isEnabled, productFeatures, exists) {\r\n super(id, name);\r\n this.sku = sku;\r\n this.category = category;\r\n this.description = description;\r\n this.shortDescription = shortDescription;\r\n this.url = url;\r\n this.imageUrl = imageUrl;\r\n this.thumbnailImageUrl = thumbnailImageUrl;\r\n this.isEnabled = isEnabled;\r\n this.productFeatures = productFeatures;\r\n this.exists = exists;\r\n }\r\n\r\n static getEmpty = () => {\r\n return {\r\n id: '',\r\n name: '',\r\n sku: '',\r\n category: BaseModel.getEmpty(),\r\n description: '',\r\n shortDescription: '',\r\n url: '',\r\n imageUrl: '',\r\n thumbnailImageUrl: '',\r\n isEnabled: true,\r\n productFeatures: [],\r\n exists: true\r\n };\r\n };\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container, Row, Col, TabContent, TabPane, Nav, NavItem, NavLink, FormGroup, Label, Input } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport classnames from 'classnames';\r\nimport './ProductContainer.css';\r\nimport { withRouter } from 'react-router-dom';\r\nimport ProductFeatures from './ProductFeatures';\r\nimport HeaderSave from '../header/HeaderSave';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router';\r\nimport { actionBeginAddProduct, actionChangeCategoryProduct, actionChangeValueProduct, actionBeginEditProduct, actionUploadThumbnailProduct, actionUploadImageProduct, actionSaveAddProduct, actionSaveEditProduct, actionToggleProduct, actionDeleteProduct, actionMessageProductDetail } from './ProductAction';\r\nimport UploadImageContainer from '../uploadImage/UploadImageContainer';\r\nimport ProductModel from './ProductModel';\r\nimport ProductConstants from './ProductConstants';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nclass ProductContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.toggle = this.toggle.bind(this);\r\n this.state = {\r\n activeTab: '1' \r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.match.path === PathsApp.PRODUCTS_ADD) {\r\n this.props.beginAdd();\r\n } else {\r\n this.props.beginEdit(this.props.match.params.id);\r\n } \r\n }\r\n\r\n toggle(tab) {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab\r\n });\r\n }\r\n }\r\n\r\n handleGetBack = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.PRODUCTS_ROOT);\r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n if (!ProductModel.isEmpty(this.props.currentProduct)) {\r\n this.props.toggle(this.props.currentProduct.id);\r\n } else {\r\n console.log('TODO-can not toggle message');\r\n } \r\n };\r\n\r\n changeCategory = (event) => {\r\n this.props.changeCategory(event.target.value);\r\n this.props.changeInputValue('category', this.props.categories.find(category => category.id === event.target.value));\r\n };\r\n\r\n handleChangeInput = (event) => {\r\n this.props.changeInputValue(event.target.id, event.target.value);\r\n };\r\n\r\n handleSave = (event) => {\r\n event.preventDefault();\r\n if (!ProductModel.isEmpty(this.props.currentProduct)) {\r\n this.props.saveEdit(this.props.currentProduct);\r\n } else {\r\n this.props.saveAdd(this.props.currentProduct);\r\n }\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n if (!ProductModel.isEmpty(this.props.currentProduct)) {\r\n this.props.delete(this.props.currentProduct.id, false);\r\n } else {\r\n console.log('TODO-can not delete message');\r\n }\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\r\n if (!this.props.currentProduct.exists) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n { this.props.messageAction ? window.scrollTo(0, 0) : null }\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 \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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.changeInputValue(ProductConstants.IMAGE, \"\")} />\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 } \r\n }\r\n}\r\n\r\nconst mapFeatures = (featuresFromCategory, productFeatures) => {\r\n \r\n if (featuresFromCategory) {\r\n return featuresFromCategory.map(f => {\r\n const options = mapOptions(f.id, productFeatures);\r\n return { featureCode: f.id, featureName: f.name, options: options, isEnabled: options.length === 0 ? false : true};\r\n });\r\n } else {\r\n return [];\r\n }\r\n};\r\n\r\nconst mapOptions = (featureId, selectedOptions) => {\r\n return selectedOptions.filter(o => o.featureId === featureId);\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n categories: state.category.items,\r\n currentProduct: state.product.selected,\r\n features: mapFeatures(state.feature.items, state.product.selected.productFeatures),\r\n messageAction: state.product.messageAction\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n beginAdd: () => dispatch(actionBeginAddProduct()),\r\n changeCategory: (categoryId) => dispatch(actionChangeCategoryProduct(categoryId)),\r\n changeInputValue: (propertie, value) => dispatch(actionChangeValueProduct(propertie, value)),\r\n beginEdit: (productId) => dispatch(actionBeginEditProduct(productId)),\r\n toggle: (productId) => dispatch(actionToggleProduct(productId)),\r\n delete: (productId, isFromList) => dispatch(actionDeleteProduct(productId, isFromList)),\r\n uploadThumbnail: (file) => dispatch(actionUploadThumbnailProduct(file)),\r\n uploadImage: (file) => dispatch(actionUploadImageProduct(file)),\r\n saveAdd: (product) => dispatch(actionSaveAddProduct(product)),\r\n saveEdit: (product) => dispatch(actionSaveEditProduct(product)),\r\n resetMessage: () => dispatch(actionMessageProductDetail(null))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ProductContainer));\r\n","import React from 'react';\r\nimport ButtonAdd from '../buttons/ButtonAdd';\r\nimport { Container, Row, Col } from 'reactstrap';\r\nimport Back from '../../images/chevLeft.png';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst HeaderChildAdd = (props) => {\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n

{props.title}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nHeaderChildAdd.propTypes = {\r\n title: PropTypes.string,\r\n addText: PropTypes.string,\r\n handleAdd: PropTypes.func,\r\n handleGetBack: PropTypes.func\r\n};\r\n\r\nexport default HeaderChildAdd;\r\n","import React from 'react';\r\nimport ItemParent from '../items/ItemParent';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FeatureItem = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nFeatureItem.propTypes = {\r\n item: PropTypes.object,\r\n path: PropTypes.string,\r\n saveAdd: PropTypes.func,\r\n cancelAdd: PropTypes.func,\r\n saveEdit: PropTypes.func,\r\n delete: PropTypes.func\r\n};\r\n\r\nexport default FeatureItem;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport HeaderChildAdd from '../header/HeaderChildAdd';\r\nimport { withRouter } from 'react-router-dom';\r\nimport ListContainer from '../list/ListContainer';\r\nimport FeatureItem from './FeatureItem';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetCategory } from '../categories/CategoryActions';\r\nimport { actionBeginAddFeature, actionSaveAddFeature, actionCancelAddFeature, actionSaveEditFeature, actionDeleteFeature, actionMessageFeature, actionGetFeaturesByPage } from './FeatureActions';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nclass FeatureContainer extends Component {\r\n\r\n componentDidMount() {\r\n this.props.getCategory(this.props.match.params.id);\r\n this.props.getFeatures(this.props.match.params.id, 0);\r\n }\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n const newItem = this.props.features.find(i => i.id === '');\r\n if (newItem) {\r\n console.log('todo integrate'); //TODO INTEGRATE REDUX TO UPDATE LIST ITEMS\r\n } else {\r\n this.props.beginAdd();\r\n }\r\n };\r\n\r\n handleGetBack = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.CATEGORIES_ROOT);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n handlePageClick = (data) => {\r\n this.props.getFeatures(this.props.match.params.id, data.selected);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {\r\n this.props.category && this.props.features\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n : null\r\n } \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n category: state.category.selected,\r\n features: state.feature.items,\r\n message: state.feature.message,\r\n pageCount: state.feature.totalPages\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getCategory: (id) => dispatch(actionGetCategory(id)),\r\n getFeatures: (categoryId, page) => dispatch(actionGetFeaturesByPage(categoryId, page)),\r\n beginAdd: () => dispatch(actionBeginAddFeature()),\r\n saveAdd: (newFeature, categoryId) => dispatch(actionSaveAddFeature(newFeature, categoryId)),\r\n cancelAdd: () => dispatch(actionCancelAddFeature()),\r\n saveEdit: (editedFeature, categoryId) => dispatch(actionSaveEditFeature(editedFeature, categoryId)),\r\n delete: (id) => dispatch(actionDeleteFeature(id)),\r\n resetMessage: () => dispatch(actionMessageFeature(null))\r\n }\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(FeatureContainer));\r\n","import React from 'react';\r\nimport ItemParent from '../items/ItemParent';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst OptionItem = (props) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nOptionItem.propTypes = {\r\n item: PropTypes.object,\r\n saveAdd: PropTypes.func,\r\n cancelAdd: PropTypes.func,\r\n parentId: PropTypes.string,\r\n saveEdit: PropTypes.func,\r\n delete: PropTypes.func\r\n};\r\n\r\nexport default OptionItem;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport HeaderChildAdd from '../header/HeaderChildAdd';\r\nimport { withRouter } from 'react-router-dom';\r\nimport ListContainer from '../list/ListContainer';\r\nimport OptionItem from './OptionItem';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetFeature } from '../features/FeatureActions';\r\nimport { actionBeginAddOption, actionCancelAddOption, actionSaveAddOption, actionSaveEditOption, actionDeleteOption, actionMessageOption, actionGetOptionsByPage } from './OptionActions';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nclass OptionContainer extends Component {\r\n\r\n componentDidMount() {\r\n this.props.getFeature(this.props.match.params.id);\r\n this.props.getOptions(this.props.match.params.id, 0);\r\n }\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n const newItem = this.props.options.find(i => i.id === '');\r\n if (newItem) {\r\n console.log('todo integrate'); //TODO INTEGRATE REDUX TO UPDATE LIST ITEMS\r\n } else {\r\n this.props.beginAdd();\r\n }\r\n };\r\n\r\n handleGetBack = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.FEATURES_BASE + this.props.feature.category.id);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n handlePageClick = (data) => {\r\n this.props.getOptions(this.props.match.params.id, data.selected);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {\r\n this.props.feature && this.props.options\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n : null\r\n } \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n feature: state.feature.selected,\r\n options: state.option.items,\r\n message: state.option.message,\r\n pageCount: state.option.totalPages\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getFeature: (id) => dispatch(actionGetFeature(id)),\r\n getOptions: (featureId, page) => dispatch(actionGetOptionsByPage(featureId, page)),\r\n beginAdd: () => dispatch(actionBeginAddOption()),\r\n saveAdd: (newOption, featureId) => dispatch(actionSaveAddOption(newOption, featureId)),\r\n cancelAdd: () => dispatch(actionCancelAddOption()),\r\n saveEdit: (optionEdited, featureId) => dispatch(actionSaveEditOption(optionEdited, featureId)),\r\n delete: (id) => dispatch(actionDeleteOption(id)),\r\n resetMessage: () => dispatch(actionMessageOption(null))\r\n }\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(OptionContainer));\r\n","import { Component } from 'react';\r\n\r\nclass QuestionAnswerBase extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n id: '',\r\n name: '',\r\n isVisible: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n id: this.props.item.id,\r\n name: this.props.item.option.name,\r\n isVisible: this.props.item.isEnabled\r\n });\r\n }\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.props.updateList(this.props.item, !this.state.isVisible);\r\n this.setState(({ isVisible }) => ({\r\n isVisible: !isVisible\r\n })); \r\n }\r\n}\r\n\r\nexport default QuestionAnswerBase;","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport QuestionAnswerBase from './QuestionAnswerBase';\r\nimport UploadImageContainer from '../uploadImage/UploadImageContainer';\r\nimport Group from '../../images/Group.png';\r\n\r\nclass QuestionAnswerIconItem extends QuestionAnswerBase {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \"order\"\r\n {this.props.item.option.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.props.item.isEnabled ?\r\n \r\n : \r\n } \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default QuestionAnswerIconItem;\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport QuestionAnswerBase from './QuestionAnswerBase';\r\nimport Group from '../../images/Group.png';\r\n\r\nclass QuestionAnswerTextItem extends QuestionAnswerBase {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \"order\"\r\n {this.props.item.option.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default QuestionAnswerTextItem;\r\n","import React, { Component } from 'react';\r\nimport { Row, Col, Input } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\n\r\nclass QuestionRangeItem extends Component {\r\n\r\n componentDidMount() {\r\n this.setState({\r\n key: this.props.item.key\r\n });\r\n }\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.props.changeValue(this.state.key, 'isEnabled', !this.props.item.isEnabled);\r\n };\r\n\r\n handleChange = (event) => {\r\n this.props.changeValue(this.state.key, event.target.id, event.target.value);\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n this.props.deleteRange(this.state.key, this.props.item.id);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n To\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\nexport default QuestionRangeItem;\r\n","import React, { Component, Fragment, useState, useRef } from 'react';\r\nimport { Container, Row, Col, FormGroup, Label, Input, CustomInput, Alert, Button } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport { withRouter } from 'react-router-dom';\r\nimport HeaderSave from '../header/HeaderSave';\r\nimport './QuestionContainer.css'\r\nimport QuestionAnswerIconItem from './QuestionAnswerIconItem';\r\nimport QuestionAnswerTextItem from './QuestionAnswerTextItem';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { Redirect } from 'react-router';\r\nimport { actionBeginAddQuestion, actionToggleQuestion, actionDeleteQuestion, actionBeginEditQuestion, actionChangeCategory, actionChangeValueQuestion, actionChangeAnswer, actionChangeFeature, actionSaveAddQuestion, actionSaveEditQuestion, actionUploadImageQuestion, actionMessageQuestionDetail, actionAddRange, actionChangeRangeValue, actionDeleteRange } from './QuestionAction';\r\nimport QuestionModel from './QuestionModel';\r\nimport QuestionAnswerModel from './QuestionAnswerModel';\r\nimport uuid from 'uuid/v1';\r\nimport TypeLayoutEnum from '../../models/TypeLayoutEnum';\r\nimport { actionResetOptions, actionOrderOptions } from '../options/OptionActions';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\nimport { SortableContainer, SortableElement } from 'react-sortable-hoc';\r\nimport Plus from '../../images/c-add2x.png';\r\nimport QuestionRangeItem from './QuestionRangeItem';\r\nimport RangeModel from './RangeModel';\r\nimport JoditEditor from \"jodit-react\";\r\n\r\nconst SortableItem = SortableElement(({ value, updateList, handleFile, AnswerComponent }) =>
);\r\n\r\nconst SortableList = SortableContainer(({ items, updateList, handleFile, AnswerComponent }) => {\r\n if (items) {\r\n return (\r\n
\r\n \r\n \r\n {items.map((value, index) => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n});\r\n\r\nconst RichTextArea = (props) => {\r\n const editor = useRef(null)\r\n\r\n const config = {\r\n readonly: false,\r\n toolbarSticky: false,\r\n buttons: \"bold,italic,underline,strikethrough,eraser,superscript,subscript,ul,ol,indent,outdent,left,font,fontsize,paragraph,classSpan,brush\"\r\n }\r\n\r\n return (\r\n {\r\n props.onChange(newContent)\r\n }}\r\n onChange={newContent => { }}\r\n />\r\n );\r\n}\r\n\r\nclass QuestionContainer extends Component {\r\n\r\n handleGetBack = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.QUESTIONS_ROOT);\r\n }\r\n\r\n getTypeLayout(typeLayout) {\r\n if (typeLayout === TypeLayoutEnum.ICON) {\r\n return QuestionAnswerIconItem;\r\n } else {\r\n return QuestionAnswerTextItem;\r\n }\r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault(); \r\n if (!QuestionModel.isEmpty(this.props.currentQuestion)) {\r\n this.props.toggle(this.props.currentQuestion.id);\r\n } else {\r\n console.log('TODO-can not toggle message');\r\n }\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n if (!QuestionModel.isEmpty(this.props.currentQuestion)) {\r\n this.props.delete(this.props.currentQuestion.id, false);\r\n } else {\r\n console.log('TODO-can not delete message');\r\n } \r\n };\r\n\r\n changeType = (event) => {\r\n this.setState({ typeLayout: event.target.value });\r\n this.props.changeInputValue('layoutType', this.props.layoutTypes.find(layoutType => layoutType.id === event.target.value));\r\n };\r\n\r\n changeCategory = (event) => {\r\n this.props.changeCategory(event.target.value);\r\n this.props.changeInputValue('category', this.props.categories.find(category => category.id === event.target.value));\r\n };\r\n\r\n changeFeature = (event) => {\r\n this.props.changeFeature(event.target.value);\r\n this.props.changeInputValue('feature', this.props.features.find(feature => feature.id === event.target.value));\r\n };\r\n\r\n componentDidMount() {\r\n if (this.props.match.path === PathsApp.QUESTIONS_ADD) {\r\n this.props.beginAdd();\r\n } else {\r\n this.props.beginEdit(this.props.match.params.id);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.resetOptions();\r\n this.props.resetMessage();\r\n }\r\n\r\n handleChangeInput = (event) => {\r\n this.props.changeInputValue(event.target.id, event.target.value);\r\n };\r\n handleChangeInputEditor = (event) => {\r\n this.props.changeInputValue('helpInfo', event);\r\n };\r\n\r\n handleChangeRadio = (event) => {\r\n if (event.target.id === 'isMultipleChoice') {\r\n this.props.changeInputValue('isMultipleChoice', true);\r\n } else {\r\n this.props.changeInputValue('isMultipleChoice', false);\r\n }\r\n };\r\n\r\n handleSave = (event) => {\r\n event.preventDefault();\r\n if (!QuestionModel.isEmpty(this.props.currentQuestion)) {\r\n this.props.saveEdit(this.props.currentQuestion); \r\n } else {\r\n this.props.saveAdd(this.props.currentQuestion);\r\n }\r\n };\r\n\r\n isValidQuestion = (question) => {\r\n return question &&\r\n question.text && question.text.length > 0 &&\r\n question.layoutType && question.layoutType.id.length > 0 &&\r\n question.category && question.category.id.length > 0 &&\r\n question.feature && question.feature.id.length > 0 &&\r\n question.answers && question.answers.length > 0;\r\n };\r\n\r\n onSortEnd = ({ oldIndex, newIndex }) => {\r\n this.props.order(oldIndex, newIndex, this.props.options);\r\n };\r\n\r\n handleAddRange = (event) => {\r\n event.preventDefault();\r\n this.props.addNewRange(RangeModel.getEmpty());\r\n };\r\n\r\n\r\n render() {\r\n if (!this.props.currentQuestion.exists) { // redirect after delete question\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {this.props.messageAction ? window.scrollTo(0, 0) : null}\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 \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
\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
Answers
\r\n \r\n {\r\n this.props.currentQuestion.layoutType.code === TypeLayoutEnum.RANGE\r\n ? \r\n \r\n \r\n : null\r\n }\r\n
\r\n {\r\n this.props.currentQuestion.layoutType.code === TypeLayoutEnum.RANGE\r\n ? this.props.currentQuestion.ranges && this.props.currentQuestion.ranges.length > 0\r\n ? this.props.currentQuestion.ranges.map(range => range.isEnabled ? : null)\r\n : null\r\n : \r\n \r\n {\r\n this.props.messageOptions ?\r\n {this.props.messageOptions}\r\n : null\r\n }\r\n \r\n } \r\n
\r\n
\r\n
\r\n );\r\n } \r\n }\r\n}\r\n\r\nconst getAnswers = (options, questionAnswers, tempAnswers) => { \r\n let answers = [];\r\n if (options && questionAnswers) {\r\n const hasOptions = questionAnswers.every(answer => answer.option);\r\n answers = options.map((option, index) => {\r\n const found = hasOptions && questionAnswers.find(answer => answer.option.id === option.id);\r\n return found\r\n ? new QuestionAnswerModel(found.id, found.questionId, option, true, found.imageUrl ? found.imageUrl : '', index, 0, 0, '')\r\n : new QuestionAnswerModel(uuid().toString(), uuid().toString(), option, false, getTempImage(tempAnswers, option.id), index, 0, 0, '');\r\n });\r\n }\r\n return answers;\r\n};\r\n\r\nconst getTempImage = (tempAnswers, optionId) => {\r\n let tempImage = '';\r\n const tempAnswer = tempAnswers.find(answer => answer.optionId === optionId);\r\n if (tempAnswer) {\r\n tempImage = tempAnswer.imageUrl;\r\n }\r\n return tempImage;\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n categories: state.category.items,\r\n features: state.feature.items,\r\n currentQuestion: state.question.selected,\r\n options: state.option.items,\r\n answers: getAnswers(state.option.items, state.question.selected.answers, state.question.tempAnswers),\r\n layoutTypes: state.question.layoutTypes,\r\n messageOptions: state.question.messageOptions,\r\n messageAction: state.question.messageAction\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n beginAdd: () => dispatch(actionBeginAddQuestion()),\r\n changeCategory: (categoryId) => dispatch(actionChangeCategory(categoryId)),\r\n beginEdit: (questionId) => dispatch(actionBeginEditQuestion(questionId)),\r\n toggle: (questionId) => dispatch(actionToggleQuestion(questionId)),\r\n delete: (questionId, isFromList) => dispatch(actionDeleteQuestion(questionId, isFromList)),\r\n changeFeature: (featureId) => dispatch(actionChangeFeature(featureId)),\r\n changeInputValue: (propertie, value) => dispatch(actionChangeValueQuestion(propertie, value)),\r\n changeAnswer: (option, isEnabled) => dispatch(actionChangeAnswer(option, isEnabled)),\r\n saveAdd: (question) => dispatch(actionSaveAddQuestion(question)),\r\n saveEdit: (question) => dispatch(actionSaveEditQuestion(question)),\r\n resetOptions: () => dispatch(actionResetOptions()),\r\n uploadFile: (file, optionId) => dispatch(actionUploadImageQuestion(file, optionId)),\r\n resetMessage: () => dispatch(actionMessageQuestionDetail(null)),\r\n order: (oldIndex, newIndex, oldOptions) => dispatch(actionOrderOptions(oldIndex, newIndex, oldOptions)),\r\n addNewRange: (range) => dispatch(actionAddRange(range)),\r\n changeRangeValue: (rangeId, field, value) => dispatch(actionChangeRangeValue(rangeId, field, value)),\r\n deleteRange: (rangeKey, rangeId) => dispatch(actionDeleteRange(rangeKey, rangeId))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(QuestionContainer));\r\n","export default class StartOverConstants {\r\n static get OPEN_ACTION_TYPE() { return 'startover/OPEN'; }\r\n static get CLOSE_ACTION_TYPE() { return 'startover/CLOSE'; }\r\n}\r\n","import StartOverConstants from \"./StartOverConstants\";\r\n\r\nconst actionOpenStartOver = () => {\r\n return {\r\n type: StartOverConstants.OPEN_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionCloseStartOver = () => {\r\n return {\r\n type: StartOverConstants.CLOSE_ACTION_TYPE\r\n };\r\n};\r\n\r\nexport { actionOpenStartOver, actionCloseStartOver };\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { Button } from 'reactstrap';\r\nimport Reset from '../../images/start_over_big.png';\r\nimport { actionCloseStartOver } from './StartOverActions';\r\nimport { connect } from 'react-redux';\r\nimport './StartOverContainer.css';\r\n\r\nModal.setAppElement('#root');\r\n\r\nconst StartOverContainer = (props) => {\r\n return (\r\n \r\n
\r\n \"start\r\n
\r\n
\r\n Are you sure you want to start over?\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n modalIsOpen: state.startover.modalIsOpen\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n close: () => dispatch(actionCloseStartOver())\r\n }\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StartOverContainer);\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport class ResultApi {\r\n static Result(distributorId) { return `${getAPIPath()}product/GetResult?distributorId=${distributorId}`; }\r\n static get ResultDraft() { return `${getAPIPath()}product/GetResultDraft`; }\r\n static GetAllProducts = (category, distributorId) => { return `${getAPIPath()}product/GetAllProductsByCategory?categoryCode=${category}&distributorId=${distributorId}`; }\r\n}\r\n","import { ResultApi } from \"./ResultApi\";\r\nimport axios from 'axios';\r\nimport ResultConstants from \"./ResultConstants\";\r\nimport WizardConstants from \"../wizard/WizardConstants\";\r\n\r\n\r\nconst getQuestionForResult = (questions) => {\r\n let request = { questions: [] };\r\n if (questions && questions.length > 0) {\r\n const questionChecked = questions.filter(q => {\r\n const options = q.options.filter(o => o.checked);\r\n return options && options.length > 0\r\n });\r\n request.questions = questionChecked.map(q => {\r\n return {\r\n \"questionId\": q.id, \"answerIds\": q.options.filter(o => o.checked).map(m => m.id), \"layoutTypeCode\": q.layoutTypeCode\r\n };\r\n });\r\n } else {\r\n request = null;\r\n }\r\n return request;\r\n};\r\n\r\nlet call;\r\nconst onceResult = (config = {}) => {\r\n if (call) {\r\n call.cancel(\"Only one request allowed at a time.\");\r\n }\r\n call = axios.CancelToken.source();\r\n config.cancelToken = call.token\r\n return axios(config);\r\n};\r\n\r\nconst getResult = async (dispatch, questions, typeSetup, distributorId) => {\r\n try {\r\n dispatch({\r\n type: ResultConstants.LOADING_ACTION_TYPE,\r\n });\r\n const request = getQuestionForResult(questions);\r\n if (request) {\r\n var config = {\r\n method: \"post\",\r\n url: typeSetup === WizardConstants.CLIENT ? ResultApi.Result(distributorId) : ResultApi.ResultDraft,\r\n data: request\r\n };\r\n const response = await onceResult(config);\r\n if (response.data && response.data.products) {\r\n dispatch({\r\n type: ResultConstants.GET_ACTION_TYPE,\r\n data: response.data.products\r\n });\r\n dispatch({\r\n type: ResultConstants.MESSAGE_RESULT_ACTION_TYPE,\r\n message: response.data.products.length > 0 ? null : ResultConstants.MESSAGE_RESULT_NOT_FOUND\r\n });\r\n } else {\r\n dispatch({\r\n type: ResultConstants.MESSAGE_RESULT_ACTION_TYPE,\r\n message: ResultConstants.MESSAGE_RESULT_NOT_FOUND\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: ResultConstants.MESSAGE_RESULT_ACTION_TYPE,\r\n message: ResultConstants.MESSAGE_RESULT_NOT_FOUND\r\n });\r\n }\r\n } catch (e) {\r\n if (axios.isCancel(e)) {\r\n console.error(`Cancelling previous request: ${e.message}`);\r\n }\r\n console.log(\"TODO - error\", e);\r\n }\r\n};\r\n\r\nconst getAllProducts = async (dispatch, category, distributorId) => {\r\n try {\r\n dispatch({\r\n type: ResultConstants.LOADING_ACTION_TYPE\r\n });\r\n const response = await axios.get(ResultApi.GetAllProducts(category, distributorId));\r\n if (response.data && response.data.products) {\r\n dispatch({\r\n type: ResultConstants.GET_ALL_PRODUCTS_ACTION_TYPE,\r\n data: response.data.products\r\n });\r\n dispatch({\r\n type: ResultConstants.MESSAGE_RESULT_ACTION_TYPE,\r\n message: response.data.products.length > 0 ? null : ResultConstants.MESSAGE_RESULT_NOT_FOUND\r\n });\r\n } else {\r\n dispatch({\r\n type: ResultConstants.GET_ALL_PRODUCTS_ACTION_TYPE,\r\n data: []\r\n });\r\n dispatch({\r\n type: ResultConstants.MESSAGE_RESULT_ACTION_TYPE,\r\n message: ResultConstants.MESSAGE_RESULT_NOT_FOUND\r\n });\r\n }\r\n } catch (e) {\r\n dispatch({\r\n type: ResultConstants.GET_ALL_PRODUCTS_ACTION_TYPE,\r\n data: null\r\n });\r\n dispatch({\r\n type: ResultConstants.MESSAGE_RESULT_ACTION_TYPE,\r\n message: ResultConstants.MESSAGE_RESULT_NOT_FOUND\r\n });\r\n }\r\n};\r\n\r\nconst actionGetResult = (questions, typeSetup, distributorId) => {\r\n return dispatch => {\r\n getResult(dispatch, questions, typeSetup, distributorId);\r\n };\r\n};\r\n\r\nconst actionResetResult = () => {\r\n return {\r\n type: ResultConstants.RESET_ACTION_TYPE\r\n };\r\n};\r\n\r\nconst actionGetAllProductsResult = (category, distributorId) => {\r\n return dispatch => {\r\n getAllProducts(dispatch, category, distributorId);\r\n };\r\n}\r\n\r\nexport { actionGetResult, actionResetResult, actionGetAllProductsResult };\r\n","export default class ResultConstants {\r\n static get GET_ACTION_TYPE() { return 'result/GET'; }\r\n static get GET_ALL_PRODUCTS_ACTION_TYPE() { return 'result/GET_ALL_PRODUCTS'; }\r\n static get RESET_ACTION_TYPE() { return 'result/RESET'; }\r\n static get LOADING_ACTION_TYPE() { return 'result/LOADING'; }\r\n static get MESSAGE_RESULT_ACTION_TYPE() { return 'result/MESSAGE_RESULT'; }\r\n static get MESSAGE_RESULT_NOT_FOUND() { return 'No products found'; } \r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container, Button, Row, Col, Progress } from 'reactstrap';\r\nimport './WizardSetup.css';\r\nimport Reset from '../../images/start_over.png';\r\nimport Info from '../../images/information.png';\r\nimport { actionOpenHelper } from '../helper/HelperActions';\r\nimport { connect } from 'react-redux';\r\nimport HelperButton from '../helper/HelperButton';\r\nimport QuestionContainer from '../question/QuestionContainer';\r\nimport { actionGetQuestion, actionUpdateOption, actionBackWizard } from './WizardActions';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport WizardConstants from './WizardConstants';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { actionOpenStartOver, actionCloseStartOver } from '../startover/StartOverActions';\r\nimport StartOverContainer from '../startover/StartOverContainer';\r\nimport { actionGetResult } from '../result/ResultAction';\r\nimport MDSpinner from \"react-md-spinner\";\r\n\r\nclass WizardSetup extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n current: this.props.lastIndex,\r\n max: this.props.max,\r\n progress: 100 * (this.props.lastIndex + 1) / (this.props.max + 1),\r\n textNext: this.getNextButtonText() // TODO: Detect category id to change text accordingly\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getQuestion(this.props.lastIndex);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.questionData !== this.props.questionData) {\r\n this.props.getResult(this.props.questionData, this.props.type, this.props.distributorId);\r\n }\r\n }\r\n\r\n handleNext = (event) => {\r\n event.preventDefault();\r\n const previous = this.state.current + 1;\r\n if (previous <= this.state.max) {\r\n this.setState((state) => ({\r\n current: state.current + 1,\r\n progress: (100 * (state.current + 2) / (state.max + 1)),\r\n textNext: this.getNextButtonText() // TODO: Detect category id to change text accordingly\r\n }));\r\n this.props.getQuestion(previous);\r\n if (previous === this.state.max) {\r\n this.setState({ textNext: 'Result' });\r\n }\r\n } else { \r\n if (this.props.type === WizardConstants.CLIENT) {\r\n this.props.history.push(PathsApp.WIZARD_PATH(PathsApp.WIZARD_RESULT_ROOT, this.props.match.params.category, this.props.match.params.distributor));\r\n }\r\n }\r\n };\r\n\r\n handleBack = (event) => {\r\n event.preventDefault();\r\n const previous = this.state.current - 1;\r\n if (previous >= 0) {\r\n this.setState((state) => ({\r\n current: state.current - 1,\r\n progress: (100 * (state.current) / (state.max + 1)),\r\n textNext: this.getNextButtonText() // TODO: Detect category id to change text accordingly\r\n }));\r\n this.props.back(previous + 1);\r\n this.props.getQuestion(previous); \r\n this.props.getResult(this.props.questionData, this.props.type);\r\n }\r\n };\r\n\r\n handleRestart = (event) => {\r\n event.preventDefault();\r\n this.props.closeStartOver();\r\n this.props.history.push(PathsApp.WIZARD_PATH(PathsApp.WIZARD_HOME_ROOT, this.props.match.params.category, this.props.match.params.distributor));\r\n };\r\n\r\n handleReset = (event) => {\r\n event.preventDefault();\r\n if (this.props.type === WizardConstants.CLIENT) {\r\n this.props.openStartOver();\r\n }\r\n };\r\n\r\n handleSeeResults = (event) => {\r\n event.preventDefault();\r\n if (this.props.type === WizardConstants.CLIENT) {\r\n this.props.history.push(PathsApp.WIZARD_PATH(PathsApp.WIZARD_RESULT_ROOT, this.props.match.params.category, this.props.match.params.distributor));\r\n }\r\n }\r\n\r\n getNextButtonText = () => {\r\n switch (this.props.match.params.category) {\r\n case \"wireless\":\r\n return \"Continue Wizard\";\r\n default:\r\n return \"Next step\";\r\n } \r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\r\n this.props.showHelper ?\r\n
\r\n \r\n
\r\n : null\r\n } \r\n {this.props.question ? : null}\r\n
\r\n \r\n \r\n \r\n {\r\n this.props.type === WizardConstants.CLIENT && this.props.showReset\r\n ? \r\n : null\r\n }\r\n \r\n \r\n \r\n {\r\n this.props.loadingResult\r\n ? \r\n \r\n \r\n : \r\n {\r\n this.props.result && this.props.result.length > 0\r\n ? \r\n {this.props.result.length} / {this.props.numberProducts} devices\r\n {\r\n this.props.type === WizardConstants.CLIENT\r\n ? \r\n : null\r\n }\r\n \r\n : this.props.isNoResult\r\n ? No results found\r\n : {this.props.numberProducts} devices\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\nWizardSetup.propTypes = {\r\n type: PropTypes.string,\r\n max: PropTypes.number,\r\n numberProducts: PropTypes.number\r\n};\r\n\r\nconst stepIsDisabled = (resultData, questionData, currentQuestion) => {\r\n let isDisabled = true;\r\n if (currentQuestion) { \r\n if (resultData && resultData.length > 0) {\r\n isDisabled = false;\r\n } else {\r\n const indexCurrent = questionData.findIndex(q => q.id === currentQuestion.id);\r\n if (indexCurrent === questionData.length - 1) {\r\n isDisabled = currentQuestion.options.filter(o => o.checked).length > 0;\r\n } else {\r\n if (currentQuestion.options.filter(o => o.checked).length === 0) {\r\n isDisabled = false;\r\n } else {\r\n const nextQuestions = questionData.filter((q, index) => index > indexCurrent);\r\n isDisabled = !nextQuestions.filter(q => q.options.filter(o => o.checked).length > 0).length > 0;\r\n }\r\n }\r\n }\r\n }\r\n return isDisabled;\r\n};\r\n\r\nconst isNoResultMessage = (questionsData) => {\r\n let showNoResult = false;\r\n if (questionsData) {\r\n showNoResult = questionsData.filter(q => q.options.filter(o => o.checked).length > 0).length > 0;\r\n }\r\n return showNoResult;\r\n};\r\n\r\nconst isVisibleHelper = (question) => {\r\n let show = false;\r\n if (question && question.helpInfo.length > 0) {\r\n show = true;\r\n }\r\n return show;\r\n};\r\n\r\nconst isVisibleReset = (questionsData) => {\r\n let isVisible = false;\r\n if (questionsData) {\r\n isVisible = questionsData.filter(q => q.options.filter(o => o.checked).length > 0).length > 0;\r\n }\r\n return isVisible;\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n question: state.wizard.currentQuestion,\r\n isDisabled: stepIsDisabled(state.result.data, state.wizard.data, state.wizard.currentQuestion),\r\n showHelper: isVisibleHelper(state.wizard.currentQuestion),\r\n questionData: state.wizard.data,\r\n result: state.result.data,\r\n lastIndex: state.wizard.lastIndex,\r\n showReset: isVisibleReset(state.wizard.data),\r\n loadingResult: state.result.loading,\r\n isNoResult: isNoResultMessage(state.wizard.data),\r\n distributorId: state.distributorClient.selected.id\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n openHelper: () => dispatch(actionOpenHelper()),\r\n openStartOver: () => dispatch(actionOpenStartOver()),\r\n closeStartOver: () => dispatch(actionCloseStartOver()),\r\n getQuestion: (index) => dispatch(actionGetQuestion(index)),\r\n updateOption: (optionId, isChecked) => dispatch(actionUpdateOption(optionId, isChecked)),\r\n getResult: (questions, typeSetup, distributorId) => dispatch(actionGetResult(questions, typeSetup, distributorId)),\r\n back: (indexBack) => dispatch(actionBackWizard(indexBack))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(WizardSetup));\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Container, Button } from 'reactstrap';\r\nimport './PreviewContainer.css';\r\nimport { withRouter } from 'react-router-dom';\r\nimport WizardSetup from '../../client/wizard/WizardSetup';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport WizardConstants from '../../client/wizard/WizardConstants';\r\nimport { actionGetSetup, actionGetNumberProducts } from '../../client/wizard/WizardActions';\r\nimport { actionDeployPreview, actionMessagePreview, actionSetCategoryPreview } from './PreviewActions';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\nimport PreviewConstants from './PreviewConstants';\r\nimport { actionResetResult } from '../../client/result/ResultAction';\r\n\r\nclass PreviewContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.props.getSetup(this.props.categoryId, WizardConstants.PREVIEW);\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getNumberProducts(this.props.categoryId, WizardConstants.PREVIEW);\r\n }\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.QUESTIONS_EDIT_BASE + this.props.question.id);\r\n };\r\n\r\n handleDeploy = (event) => {\r\n event.preventDefault();\r\n this.props.deploy(this.props.categoryId);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n this.props.resetCategorySelected();\r\n this.props.resetResults();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.props.question && this.props.question.id\r\n ? \r\n \r\n \r\n \r\n : !this.props.loadingWizard\r\n ? \r\n \r\n \r\n \r\n : null\r\n }\r\n
\r\n \r\n { \r\n this.props.questions\r\n ? \r\n : !this.props.loadingWizard ? : null\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n questions: state.wizard.data,\r\n categoryId: state.preview.categoryId,\r\n message: state.preview.message,\r\n question: state.wizard.currentQuestion,\r\n numberProducts: state.wizard.numberProducts,\r\n loadingWizard: state.wizard.loading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getSetup: (category, typeSetup) => dispatch(actionGetSetup(category, typeSetup)),\r\n deploy: (categoryId) => dispatch(actionDeployPreview(categoryId)),\r\n resetMessage: () => dispatch(actionMessagePreview(null)),\r\n resetCategorySelected: () => dispatch(actionSetCategoryPreview('')),\r\n getNumberProducts: (category, typeSetup) => dispatch(actionGetNumberProducts(category, typeSetup)),\r\n resetResults: () => dispatch(actionResetResult())\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(PreviewContainer));\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport './HomeSetup.css';\r\nimport NOT_FOUND from '../../images/not-found-icon.jpg';\r\n\r\nconst HomeSetup = (props) => {\r\n return (\r\n \r\n
\r\n \"home\"\r\n
\r\n
\r\n
\r\n

{props.layout.title}

\r\n
\r\n
\r\n

{props.layout.description}

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst addDefaultSrc = (ev) => {\r\n ev.target.src = NOT_FOUND;\r\n};\r\n\r\nexport default HomeSetup;\r\n","export default class HomeConstants {\r\n static get GET_ACTION_TYPE() { return 'layout_wizard/GET'; } \r\n static get MESSAGE_ERROR() { return { type: 'danger', text: 'Data not found.' }; }\r\n}\r\n","import getAPIPath from '../../utils/PathResolver';\r\nexport default class HomeApi {\r\n static GetLayout(category) {\r\n return `${getAPIPath()}layout?categoryCode=${category}`;\r\n }\r\n}\r\n","import HomeConstants from \"./HomeConstants\";\r\nimport axios from 'axios';\r\nimport HomeApi from \"./HomeApi\";\r\n\r\nconst getLayout = async (dispatch, category) => {\r\n try {\r\n const response = await axios.get(HomeApi.GetLayout(category));\r\n if (response.data) {\r\n dispatch({\r\n type: HomeConstants.GET_ACTION_TYPE,\r\n layout: response.data\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n console.log('TODO - error', e);\r\n }\r\n};\r\n\r\nconst actionGetWizardLayout = (category) => {\r\n return dispatch => {\r\n getLayout(dispatch, category);\r\n };\r\n};\r\n\r\nexport { actionGetWizardLayout }\r\n","import getAPIPath from '../../utils/PathResolver';\r\n\r\nexport default class DistributorClientApi {\r\n static GetDistributor = (token) => { return `${getAPIPath()}distributor/GetByToken?token=${token}`; }\r\n}\r\n","export default class DistributorClientConstants {\r\n static get DEFAULT() { return 'us'; }\r\n static get REDIRECT() { return 'region'; }\r\n static get NOT_FOUND() { return 'Path not found.'; }\r\n static get GET_ACTION_TYPE() { return 'distributor_client/GET'; }\r\n}\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nexport default class DistributorClientModel extends BaseModel {\r\n constructor(id, name, layoutUrl) {\r\n super(id, name);\r\n this.layoutUrl = layoutUrl;\r\n }\r\n\r\n static getEmpty() {\r\n return new DistributorClientModel('', '', '');\r\n }\r\n}","import DistributorClientConstants from \"./DistributorClientConstants\";\r\n\r\nclass DistributorClienUtils {\r\n static isDefault(distributor) {\r\n return distributor === DistributorClientConstants.DEFAULT || distributor === DistributorClientConstants.REDIRECT;\r\n }\r\n}\r\n\r\nexport default DistributorClienUtils;\r\n","import axios from 'axios';\r\nimport DistributorClientApi from './DistributorClientApi';\r\nimport DistributorClientConstants from './DistributorClientConstants';\r\nimport DistributorClientModel from './DistributorClientModel';\r\nimport DistributorClienUtils from './DistributorClientUtils';\r\n\r\nconst getDistributor = async (dispatch, token, callback) => {\r\n try {\r\n let distributorData = {};\r\n if (DistributorClienUtils.isDefault(token)) {\r\n distributorData = new DistributorClientModel(DistributorClientConstants.DEFAULT, '', '');\r\n dispatch({\r\n type: DistributorClientConstants.GET_ACTION_TYPE,\r\n distributor: distributorData\r\n });\r\n } else {\r\n const response = await axios.get(DistributorClientApi.GetDistributor(token));\r\n if (response.data) {\r\n distributorData = new DistributorClientModel(response.data.id, response.data.name, response.data.layoutUrl);\r\n dispatch({\r\n type: DistributorClientConstants.GET_ACTION_TYPE,\r\n distributor: distributorData\r\n });\r\n } else {\r\n distributorData = null\r\n dispatch({\r\n type: DistributorClientConstants.GET_ACTION_TYPE,\r\n distributor: DistributorClientModel.getEmpty()\r\n });\r\n }\r\n } \r\n callback(distributorData);\r\n } catch (e) {\r\n console.log('error', e);\r\n }\r\n};\r\n\r\nconst actionGetDistributorByToken = (token, callback) => {\r\n return dispatch => {\r\n getDistributor(dispatch, token, callback);\r\n };\r\n};\r\n\r\nexport { actionGetDistributorByToken }","import React from 'react';\r\nimport { Container, Alert } from 'reactstrap';\r\nimport DistributorClientConstants from './DistributorClientConstants';\r\n\r\nconst DistributorNotFound = () => {\r\n return (\r\n \r\n {DistributorClientConstants.NOT_FOUND}\r\n \r\n );\r\n};\r\n\r\nexport default DistributorNotFound;","import React, { Component } from 'react';\r\nimport { Container, Button } from 'reactstrap';\r\nimport HomeSetup from './HomeSetup';\r\nimport './HomeContainer.css';\r\nimport '../Client.css';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetWizardLayout } from './HomeActions';\r\nimport { actionResetWizardSelected } from '../wizard/WizardActions';\r\nimport { actionResetResult } from '../result/ResultAction';\r\nimport { actionGetDistributorByToken } from '../distributor/DistributorClientAction';\r\nimport DistributorNotFound from '../distributor/DistributorNotFound';\r\nimport DistributorClientConstants from '../distributor/DistributorClientConstants';\r\n\r\nclass HomeContainer extends Component {\r\n\r\n constructor(props) { \r\n super(props);\r\n this.state = {\r\n notFound: false,\r\n distributor: this.props.match.params.distributor ? this.props.match.params.distributor : DistributorClientConstants.REDIRECT\r\n };\r\n }\r\n\r\n handleGetStarted = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.WIZARD_PATH(PathsApp.WIZARD_STEPS_ROOT, this.props.match.params.category, this.state.distributor));\r\n };\r\n\r\n componentDidMount() {\r\n this.props.resetWizard();\r\n this.props.resetResult(); \r\n this.props.getDistributor(this.state.distributor, (distributor) => {\r\n if (distributor) {\r\n this.continueDistributor();\r\n } else {\r\n this.setState({ notFound: true });\r\n }\r\n });\r\n }\r\n\r\n continueDistributor() {\r\n this.props.getLayout(this.props.match.params.category);\r\n }\r\n\r\n render() {\r\n if (this.state.notFound) {\r\n return (\r\n \r\n );\r\n } else {\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\nconst mapStateToProps = state => {\r\n return {\r\n layout: state.home.layout,\r\n distributor: state.distributorClient.selected\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getLayout: (category) => dispatch(actionGetWizardLayout(category)),\r\n resetWizard: () => dispatch(actionResetWizardSelected()),\r\n resetResult: () => dispatch(actionResetResult()),\r\n getDistributor: (token, callback) => dispatch(actionGetDistributorByToken(token, callback))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(HomeContainer));\r\n","import React, { Component } from 'react';\r\nimport { Navbar, NavbarBrand } from 'reactstrap';\r\nimport { NavLink as RRNavLink } from 'react-router-dom';\r\nimport NavApp from '../../nav/NavApp';\r\nimport Logo from '../../images/Netgear_Business2x.png';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport './NavClient.css';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nclass NavClient extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \"logo\"\r\n \r\n \r\n \r\n );\r\n } \r\n}\r\n\r\nexport default withRouter(NavClient);\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport NavClient from '../nav/NavClient';\r\nimport './MasterClient.css';\r\n\r\nconst MasterClient = (props) => {\r\n return (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MasterClient;\r\n","import React, { Component } from 'react';\r\nimport WizardSetup from '../wizard/WizardSetup';\r\nimport './StepsContainer.css';\r\nimport WizardConstants from '../wizard/WizardConstants';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetSetup, actionGetNumberProducts } from '../wizard/WizardActions';\r\nimport PropTypes from 'prop-types';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\nimport { actionGetDistributorByToken } from '../distributor/DistributorClientAction';\r\nimport DistributorNotFound from '../distributor/DistributorNotFound';\r\n\r\nclass StepsContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n notFound: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getDistributor(this.props.match.params.distributor, (distributor) => {\r\n if (distributor) {\r\n this.continueQuestions(distributor);\r\n } else {\r\n this.setState({ notFound: true });\r\n }\r\n }); \r\n }\r\n\r\n continueQuestions(distributor) {\r\n if (!this.props.questions) {\r\n this.props.getSetup(this.props.match.params.category, WizardConstants.CLIENT);\r\n }\r\n this.props.getNumberProducts(this.props.match.params.category, WizardConstants.CLIENT, distributor.id);\r\n }\r\n\r\n render() {\r\n if (this.state.notFound) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n
\r\n \r\n {this.props.questions ?\r\n \r\n : null\r\n }\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nStepsContainer.propTypes = {\r\n questions: PropTypes.array\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n questions: state.wizard.data,\r\n message: state.wizard.message,\r\n numberProducts: state.wizard.numberProducts\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getSetup: (category, typeSetup) => dispatch(actionGetSetup(category, typeSetup)),\r\n getNumberProducts: (category, typeSetup, distributorId) => dispatch(actionGetNumberProducts(category, typeSetup, distributorId)),\r\n getDistributor: (token, callback) => dispatch(actionGetDistributorByToken(token, callback))\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StepsContainer);\r\n","import React, { Component } from 'react';\r\nimport { Container, Button } from 'reactstrap';\r\nimport NOT_FOUND from '../../images/not-found-icon.jpg';\r\n\r\nclass ResultItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isMouseInside: true\r\n };\r\n }\r\n\r\n handleLearn = (event) => {\r\n event.preventDefault();\r\n try {\r\n window.open(this.props.data.url, \"_blank\")\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n addDefaultSrc = (ev) => {\r\n ev.target.src = NOT_FOUND;\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n {this.props.data.name}\r\n
\r\n
\r\n {\r\n this.props.data.imageUrl\r\n ? \"result\"\r\n : \"result\"\r\n }\r\n
\r\n
\r\n {this.props.data.description}\r\n
\r\n {\r\n this.state.isMouseInside && this.props.data.url && this.props.data.url.length > 0\r\n ? \r\n : null\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ResultItem;\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport ResultItem from './ResultItem';\r\nimport uuid from 'uuid/v1';\r\n\r\nconst ResultList = (props) => {\r\n let listItems = null;\r\n if (props.items) {\r\n listItems = props.items.map(item =>\r\n );\r\n }\r\n\r\n return (\r\n \r\n {listItems}\r\n \r\n );\r\n};\r\n\r\nexport default ResultList;\r\n","import React, { Component } from 'react';\r\nimport { Container, Row, Col, Button, Alert } from 'reactstrap';\r\nimport './ResultContainer.css';\r\nimport ResultList from './ResultList';\r\nimport Reset from '../../images/start_over.png';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport { connect } from 'react-redux';\r\nimport { actionResetResult, actionGetAllProductsResult } from './ResultAction';\r\nimport { actionGetWizardLayout } from '../home/HomeActions';\r\nimport { actionGetDistributorByToken } from '../distributor/DistributorClientAction';\r\nimport DistributorClientConstants from '../distributor/DistributorClientConstants';\r\nimport DistributorNotFound from '../distributor/DistributorNotFound';\r\nimport DistributorClienUtils from '../distributor/DistributorClientUtils';\r\n\r\nclass ResultContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n shouldReset: false,\r\n notFound: false\r\n }\r\n }\r\n\r\n handleReset = (event) => {\r\n event.preventDefault(); \r\n this.props.history.push(PathsApp.WIZARD_PATH(PathsApp.WIZARD_HOME_ROOT, this.props.match.params.category, this.props.match.params.distributor));\r\n this.props.resetResult();\r\n };\r\n\r\n componentDidMount() {\r\n this.props.getDistributor(this.props.match.params.distributor, (distributor) => {\r\n if (distributor) {\r\n this.continueResult(distributor);\r\n } else {\r\n this.setState({ notFound: true });\r\n }\r\n });\r\n }\r\n\r\n continueResult(distributor) {\r\n if (!this.props.result || this.props.result.length === 0) {\r\n this.props.getAllProducts(this.props.match.params.category, distributor.id);\r\n this.setState({ shouldReset: true });\r\n } \r\n this.props.getLayout();\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.state.shouldReset) {\r\n this.props.resetResult();\r\n }\r\n }\r\n \r\n handleBackWizard = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.WIZARD_PATH(PathsApp.WIZARD_STEPS_ROOT, this.props.match.params.category, this.props.match.params.distributor));\r\n }\r\n\r\n getLayoutUrl = () => {\r\n return DistributorClienUtils.isDefault(this.props.distributor.id) ? this.props.layout.discoverMoreResult : this.props.distributor.layoutUrl;\r\n }\r\n\r\n render() {\r\n if (this.state.notFound) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n
\r\n

{this.props.layout.titleResult}

\r\n
\r\n \r\n \r\n {this.props.layout.descriptionResult}\r\n \r\n \r\n \r\n {\r\n !this.props.loading ?\r\n \r\n {\r\n this.props.result ?\r\n \r\n : null\r\n }\r\n {\r\n this.props.message ?\r\n {this.props.message}\r\n : null\r\n }\r\n \r\n : null\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\nconst mapStateToProps = state => {\r\n return {\r\n questions: state.wizard.data,\r\n result: state.result.data,\r\n message: state.result.message,\r\n layout: state.home.layout,\r\n loading: state.result.loading,\r\n distributor: state.distributorClient.selected\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n resetResult: () => dispatch(actionResetResult()),\r\n getLayout: () => dispatch(actionGetWizardLayout()),\r\n getAllProducts: (category, distributorId) => dispatch(actionGetAllProductsResult(category, distributorId)),\r\n getDistributor: (token, callback) => dispatch(actionGetDistributorByToken(token, callback))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ResultContainer));\r\n","import React from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport PathsApp from '../utils/PathsApp';\r\nimport AppRoute from './AppRoute';\r\n\r\nexport default ({ component: Component, layout: Layout, isAuthenticated: IsAuthenticated, ...rest }) => { \r\n if (!IsAuthenticated) { \r\n return \r\n } else {\r\n return } />\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport PathsApp from '../utils/PathsApp';\r\nimport AppRoute from './AppRoute';\r\n\r\nexport default ({ component: Component, layout: Layout, isAuthenticated: IsAuthenticated, ...rest }) => {\r\n if (IsAuthenticated) {\r\n return \r\n } else {\r\n return } />\r\n }\r\n}\r\n","export default class BrowserUtil {\r\n static ISIE() { return /*@cc_on!@*/false || !!document.documentMode; }\r\n}\r\n","import React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport HOME from '../images/browser.png';\r\nimport './BrowserContainer.css';\r\n\r\nconst InternetExplorerContainer = () => {\r\n return (\r\n \r\n
\r\n \"home\"\r\n
\r\n
\r\n
\r\n

Internet Alert

\r\n
\r\n
\r\n

This platform doesn’t work with Explorer 11. Please use another browser.

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default InternetExplorerContainer;\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport { withRouter } from 'react-router-dom';\r\nimport BaseItem from '../items/BaseItem';\r\nimport PropTypes from 'prop-types';\r\nimport PathsApp from '../../utils/PathsApp';\r\n\r\nclass DistributorItem extends BaseItem {\r\n\r\n componentDidMount() {\r\n this.setState({\r\n id: this.props.item.id,\r\n name: this.props.item.name,\r\n itemIsVisible: this.props.item.isEnabled\r\n });\r\n }\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.DISTRIBUTORS_EDIT_BASE + this.props.item.id);\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n this.props.delete(this.props.item.id, true);\r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n this.props.handleVisible(this.props.item.id);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.item.name}\r\n \r\n \r\n {\r\n this.state.isMouseInside ? : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nDistributorItem.propTypes = {\r\n item: PropTypes.object\r\n};\r\n\r\nexport default withRouter(DistributorItem);","import ErrorsApp from \"../../utils/ErrorsApp\";\r\n\r\nexport default class DistributorConstants {\r\n static get BEGIN_LIST_ACTION_TYPE() { return 'distributor/BEGIN_LIST'; }\r\n static get GET_ALL_ACTION_TYPE() { return 'distributor/GET_ALL'; }\r\n static get MESSAGE_LIST_ACTION_TYPE() { return 'distributor/MESSAGE_LIST'; }\r\n static get MESSAGE_LIST_NOT_FOUND() { return 'No distributors found'; }\r\n static get MESSAGE_PRODUCTSDISTRIBUTOR_NOT_SELECTED() { return 'No products selected'; }\r\n static get TOGGLE_ACTION_TYPE() { return 'distributor/TOGGLE'; }\r\n static get DELETE_ACTION_TYPE() { return 'distributor/DELETE'; }\r\n static get OPEN_SELECT_ACTION_TYPE() { return 'distributor/OPEN_SELECT'; }\r\n static get CLOSE_SELECT_ACTION_TYPE() { return 'distributor/CLOSE_SELECT'; }\r\n static get OPEN_SELECTED_ACTION_TYPE() { return 'distributor/OPEN_SELECTED'; }\r\n static get CLOSE_SELECTED_ACTION_TYPE() { return 'distributor/CLOSE_SELECTED'; }\r\n static get BEGIN_ADD_ACTION_TYPE() { return 'distributor/BEGIN_ADD'; }\r\n static get CHANGE_VALUE_ACTION_TYPE() { return 'distributor/CHANGE_VALUE'; }\r\n static get UPDATE_PRODUCTS_ACTION_TYPE() { return 'distributor/UPDATE_PRODUCTS'; }\r\n static get CONFIRM_PRODUCTS_ACTION_TYPE() { return 'distributor/CONFIRM_PRODUCTS'; }\r\n static get CHANGE_VALUE_PRODUCT_ACTION_TYPE() { return 'distributor/CHANGE_VALUE_PRODUCT'; }\r\n static get UPDATE_PRODUCT_SELECTED_ACTION_TYPE() { return 'distributor/UPDATE_PRODUCT_SELECTED'; }\r\n static get REMOVE_PRODUCT_ACTION_TYPE() { return 'distributor/REMOVE_PRODUCT'; }\r\n static get SELECT_ALL_PRODUCTS_ACTION_TYPE() { return 'distributor/SELECT_ALL_PRODUCTS'; }\r\n static get CHANGE_VALUE_SELECT_ALL_ACTION_TYPE() { return 'distributor/CHANGE_VALUE_SELECT_ALL'; }\r\n static get SAVE_ADD_ACTION_TYPE() { return 'distributor/SAVE_ADD'; }\r\n static get SAVE_EDIT_ACTION_TYPE() { return 'distributor/SAVE_EDIT'; }\r\n static get MESSAGE_ACTION_ACTION_TYPE() { return 'distributor/MESSAGE_ACTION'; }\r\n static get MESSAGE_LIST_ACTION_ACTION_TYPE() { return 'distributor/MESSAGE_LIST_ACTION'; }\r\n static get GET_ACTION_TYPE() { return 'distributor/GET'; }\r\n static get SET_INVALIDS_PRODUCTS() { return 'distributor/SET_INVALIDS_PRODUCTS'; }\r\n static get RESET_INVALIDS_PRODUCTS() { return 'distributor/RESET_INVALIDS_PRODUCTS'; }\r\n static get PAGE_SIZE() { return 5; }\r\n static get PAGE_LIST_SIZE() { return 10; }\r\n static get MESSAGE_ADD_OK() { return { type: 'success', text: 'Distributor added succesfully.' }; } \r\n static MESSAGE_ADD_ERROR = (data) => { return { type: 'danger', text: ErrorsApp.GET_MESSAGE_TEXT(data) }; }\r\n static get MESSAGE_UPDATE_OK() { return { type: 'success', text: 'Distributor updated succesfully.' }; }\r\n static MESSAGE_UPDATE_ERROR = (data) => { return { type: 'danger', text: ErrorsApp.GET_MESSAGE_TEXT(data) }; }\r\n}\r\n","import getAPIPath from '../../utils/PathResolver';\r\nimport DistributorConstants from \"./DistributorConstants\";\r\n\r\nexport default class DistributorApi {\r\n static GetDistributors = (page) => { return `${getAPIPath()}distributor?page=${page}&pageSize=${DistributorConstants.PAGE_LIST_SIZE}`; }\r\n static get PostDistributor() { return `${getAPIPath()}distributor`; }\r\n static GetDistributor = (id) => { return `${getAPIPath()}distributor/GetById?id=${id}`; }\r\n static get PutDistributor() { return `${getAPIPath()}distributor`; }\r\n static ToggleDistributor = (id) => { return `${getAPIPath()}distributor/Toggle?id=${id}`; }\r\n static DeleteDistributor = (id) => { return `${getAPIPath()}distributor?id=${id}`; }\r\n}\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nexport default class DistributorRequestModel extends BaseModel {\r\n constructor(id, name, token, layoutUrl, isRegion, isEnabled, productsDistributor, exists, productDomain) {\r\n super(id, name);\r\n this.token = token;\r\n this.layoutUrl = layoutUrl;\r\n this.isRegion = isRegion;\r\n this.isEnabled = isEnabled;\r\n this.productsDistributor = productsDistributor;\r\n this.exists = exists;\r\n this.productDomain = productDomain;\r\n }\r\n\r\n static getEmpty = () => {\r\n return new DistributorRequestModel('', '', '', '', false, true, [], true, '');\r\n };\r\n}\r\n","import BaseModel from \"../../models/BaseModel\";\r\n\r\nexport default class ProductDistributorRequestModel {\r\n constructor(id, productId, productName, distributorId, url, isEnabled, category, sku) {\r\n this.id = id;\r\n this.productId = productId;\r\n this.productName = productName;\r\n this.distributorId = distributorId;\r\n this.url = url;\r\n this.isEnabled = isEnabled;\r\n this.category = category;\r\n this.sku = sku;\r\n }\r\n\r\n static getEmpty = () => {\r\n return new ProductDistributorRequestModel('', '', '', '', '', true, BaseModel.getEmpty(), '');\r\n };\r\n}","import DistributorConstants from \"./DistributorConstants\";\r\nimport { actionErrorAuth } from \"../login/LoginAction\";\r\nimport axios from 'axios';\r\nimport DistributorApi from \"./DistributorApi\";\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\nimport DistributorRequestModel from \"./DistributorRequestModel\";\r\nimport ProductDistributorRequestModel from \"./ProductDistributorRequestModel\";\r\nimport BaseModel from \"../../models/BaseModel\";\r\n\r\nconst getDistributors = async (dispatch, page) => {\r\n try {\r\n const response = await axios.get(DistributorApi.GetDistributors(page));\r\n processGetResponse(dispatch, response);\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n dispatch({\r\n type: DistributorConstants.GET_ALL_ACTION_TYPE,\r\n items: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n });\r\n }\r\n};\r\n\r\nconst processGetResponse = (dispatch, response) => {\r\n if (response.data && response.data.list) {\r\n dispatch({\r\n type: DistributorConstants.GET_ALL_ACTION_TYPE,\r\n items: response.data.list.length > 0 ? response.data.list : null,\r\n totalItems: response.data.totalItems,\r\n totalPages: response.data.totalPages\r\n });\r\n if (response.data.list.length > 0) {\r\n dispatch({\r\n type: DistributorConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: null\r\n });\r\n } else {\r\n dispatch({\r\n type: DistributorConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: DistributorConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: DistributorConstants.MESSAGE_LIST_ACTION_TYPE,\r\n message: DistributorConstants.MESSAGE_LIST_NOT_FOUND\r\n });\r\n }\r\n};\r\n\r\nconst deleteDistributor = async (dispatch, distributorId, isFromList) => {\r\n try {\r\n const response = await axios.delete(DistributorApi.DeleteDistributor(distributorId));\r\n if (response.data) {\r\n dispatch({\r\n type: DistributorConstants.DELETE_ACTION_TYPE,\r\n id: distributorId,\r\n isFromList: isFromList\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst objectToDistributorRequest = (distributor, isAdd) => {\r\n const distributorRequest = {\r\n id: isAdd ? UuidUtil.EMPTY : distributor.id,\r\n name: distributor.name,\r\n token: distributor.token,\r\n layoutUrl: distributor.layoutUrl,\r\n isRegion: distributor.isRegion,\r\n isEnabled: true,\r\n productDomain: distributor.productDomain,\r\n productsDistributor: isAdd ? mapSaveProductToRequestObject(distributor.productsDistributor) : mapEditProductToRequestObject(distributor.productsDistributor)\r\n }; \r\n return distributorRequest;\r\n};\r\n\r\nconst mapSaveProductToRequestObject = (productsDistributor) => {\r\n return productsDistributor.filter(pd => pd.isEnabled).map(pf => {\r\n return {\r\n id: UuidUtil.EMPTY,\r\n productId: pf.productId,\r\n url: pf.url,\r\n isEnabled: true\r\n };\r\n });\r\n};\r\n\r\nconst mapEditProductToRequestObject = (productsDistributor) => {\r\n return productsDistributor.map(pf => {\r\n return {\r\n id: pf.id === pf.productId ? UuidUtil.EMPTY : pf.id,\r\n productId: pf.productId,\r\n url: pf.isEnabled ? pf.url : window.location.origin,\r\n isEnabled: pf.isEnabled\r\n };\r\n });\r\n};\r\n\r\nconst saveDistributor = async (dispatch, distributor) => {\r\n try {\r\n const response = await axios.post(DistributorApi.PostDistributor, objectToDistributorRequest(distributor, true));\r\n if (response.data) {\r\n dispatch(actionMessageDistributor(DistributorConstants.MESSAGE_ADD_OK));\r\n dispatch({\r\n type: DistributorConstants.SAVE_ADD_ACTION_TYPE,\r\n });\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageDistributorDetail(DistributorConstants.MESSAGE_ADD_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst getDistributor = async (dispatch, distributorId, callback) => {\r\n try {\r\n const response = await axios.get(DistributorApi.GetDistributor(distributorId));\r\n if (response.data) {\r\n callback(response.data.token, response.data.isRegion);\r\n dispatch(actionLoadDistributor(response.data)); \r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst editDistributor = async (dispatch, distributor) => {\r\n try {\r\n const response = await axios.put(DistributorApi.PutDistributor, objectToDistributorRequest(distributor, false));\r\n if (response.data) {\r\n dispatch(actionMessageDistributor(DistributorConstants.MESSAGE_UPDATE_OK));\r\n dispatch({\r\n type: DistributorConstants.SAVE_EDIT_ACTION_TYPE\r\n });\r\n }\r\n } catch (e) {\r\n if (e && e.response && e.response.status === 400 && e.response.data) {\r\n dispatch(actionMessageDistributorDetail(DistributorConstants.MESSAGE_UPDATE_ERROR(e.response.data)));\r\n }\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst toggleDistributor = async (dispatch, distributorId) => {\r\n try {\r\n const response = await axios.delete(DistributorApi.ToggleDistributor(distributorId));\r\n if (response.data) {\r\n dispatch({\r\n type: DistributorConstants.TOGGLE_ACTION_TYPE,\r\n id: distributorId\r\n });\r\n } else {\r\n //TODO: NO DATA ON SERVER\r\n console.log(\"TODO - error server\");\r\n }\r\n } catch (e) {\r\n dispatch(actionErrorAuth(e));\r\n }\r\n};\r\n\r\nconst actionLoadDistributor = (data) => {\r\n const distributor = new DistributorRequestModel(\r\n data.id,\r\n data.name,\r\n data.token,\r\n data.layoutUrl,\r\n data.isRegion,\r\n data.isEnabled,\r\n data.productsDistributor.map(pd => {\r\n return new ProductDistributorRequestModel(\r\n pd.id,\r\n pd.productId,\r\n pd.productName,\r\n pd.distributorId,\r\n pd.url,\r\n true,\r\n new BaseModel('', pd.categoryName),\r\n pd.productSku\r\n )\r\n }),\r\n true,\r\n data.productDomain\r\n );\r\n return {\r\n type: DistributorConstants.GET_ACTION_TYPE,\r\n distributor: distributor\r\n };\r\n};\r\n\r\nconst actionGetDistributors = (page) => {\r\n return dispatch => {\r\n getDistributors(dispatch, page);\r\n };\r\n};\r\n\r\nconst actionBeginListDistributors = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.BEGIN_LIST_ACTION_TYPE\r\n });\r\n dispatch(actionGetDistributors(0));\r\n };\r\n};\r\n\r\nconst actionToggleDistributor = (distributorId) => {\r\n return dispatch => {\r\n toggleDistributor(dispatch, distributorId);\r\n };\r\n};\r\n\r\nconst actionDeleteDistributor = (distributorId, isFromList) => {\r\n return dispatch => {\r\n deleteDistributor(dispatch, distributorId, isFromList);\r\n };\r\n};\r\n\r\nconst actionOpenProductsSelect = (products) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.OPEN_SELECT_ACTION_TYPE,\r\n products: products\r\n });\r\n };\r\n};\r\n\r\nconst actionCloseProductsSelect = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.CLOSE_SELECT_ACTION_TYPE\r\n });\r\n };\r\n};\r\n\r\nconst actionOpenProductSelected = (product) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.OPEN_SELECTED_ACTION_TYPE,\r\n product: product\r\n });\r\n };\r\n};\r\n\r\nconst actionCloseProductSelected = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.CLOSE_SELECTED_ACTION_TYPE\r\n });\r\n };\r\n};\r\n\r\nconst actionBeginAddDistributor = (token) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.BEGIN_ADD_ACTION_TYPE\r\n });\r\n dispatch(actionChangeValueDistributor('token', token));\r\n } \r\n};\r\n\r\nconst actionChangeValueDistributor = (propertie, value) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.CHANGE_VALUE_ACTION_TYPE,\r\n propertie: propertie,\r\n value: value\r\n });\r\n };\r\n};\r\n\r\nconst actionUpdateProductsDistributor = (product, products) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.UPDATE_PRODUCTS_ACTION_TYPE,\r\n product: product,\r\n products: products\r\n });\r\n };\r\n};\r\n\r\nconst actionConfirmProductsDistributor = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.CONFIRM_PRODUCTS_ACTION_TYPE\r\n });\r\n };\r\n};\r\n\r\nconst actionChangeValueProductDistributor = (propertie, value) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.CHANGE_VALUE_PRODUCT_ACTION_TYPE,\r\n propertie: propertie,\r\n value: value\r\n });\r\n };\r\n};\r\n\r\nconst actionUpdateProductDistributorSelected = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.UPDATE_PRODUCT_SELECTED_ACTION_TYPE\r\n });\r\n };\r\n};\r\n\r\nconst actionRemoveProductDistributor = (productId) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.REMOVE_PRODUCT_ACTION_TYPE,\r\n productId: productId\r\n });\r\n };\r\n};\r\n\r\nconst actionSelectAllProductsDistributor = (flag, products) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.SELECT_ALL_PRODUCTS_ACTION_TYPE,\r\n flag: flag,\r\n products: products\r\n });\r\n };\r\n};\r\n\r\nconst actionChangeValueSelectAll = (flag) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.CHANGE_VALUE_SELECT_ALL_ACTION_TYPE,\r\n flag: flag\r\n });\r\n };\r\n};\r\n\r\nconst actionSaveAddDistributor = (distributor) => {\r\n return dispatch => {\r\n dispatch(actionMessageDistributorDetail(null));\r\n saveDistributor(dispatch, distributor);\r\n };\r\n};\r\n\r\nconst actionMessageDistributorDetail = (message) => {\r\n return {\r\n type: DistributorConstants.MESSAGE_ACTION_ACTION_TYPE,\r\n messageAction: message\r\n };\r\n};\r\n\r\nconst actionMessageDistributor = (message) => {\r\n return {\r\n type: DistributorConstants.MESSAGE_LIST_ACTION_ACTION_TYPE,\r\n messageListAction: message\r\n };\r\n};\r\n\r\nconst actionBeginEditDistributor = (distributorId, callback) => {\r\n return dispatch => {\r\n dispatch(actionMessageDistributor(null));\r\n getDistributor(dispatch, distributorId, callback);\r\n };\r\n};\r\n\r\nconst actionSaveEditDistributor = (distributor) => {\r\n return dispatch => {\r\n dispatch(actionMessageDistributorDetail(null));\r\n editDistributor(dispatch, distributor);\r\n };\r\n};\r\n\r\nconst actionSetInvalidsProductsDistributor = (invalids) => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.SET_INVALIDS_PRODUCTS,\r\n invalids: invalids\r\n })\r\n };\r\n};\r\n\r\nconst actionResetInvalidProductsDistributor = () => {\r\n return dispatch => {\r\n dispatch({\r\n type: DistributorConstants.RESET_INVALIDS_PRODUCTS\r\n }); \r\n };\r\n};\r\n\r\nexport {\r\n actionBeginListDistributors,\r\n actionGetDistributors,\r\n actionToggleDistributor,\r\n actionDeleteDistributor,\r\n actionCloseProductsSelect,\r\n actionOpenProductsSelect,\r\n actionCloseProductSelected,\r\n actionOpenProductSelected,\r\n actionBeginAddDistributor,\r\n actionChangeValueDistributor,\r\n actionUpdateProductsDistributor,\r\n actionConfirmProductsDistributor,\r\n actionChangeValueProductDistributor,\r\n actionUpdateProductDistributorSelected,\r\n actionRemoveProductDistributor,\r\n actionSelectAllProductsDistributor,\r\n actionChangeValueSelectAll,\r\n actionMessageDistributorDetail,\r\n actionSaveAddDistributor,\r\n actionMessageDistributor,\r\n actionBeginEditDistributor,\r\n actionSaveEditDistributor,\r\n actionSetInvalidsProductsDistributor,\r\n actionResetInvalidProductsDistributor\r\n};","import React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Container, Alert } from 'reactstrap';\r\nimport '../Admin.css';\r\nimport HeaderAdd from '../header/HeaderAdd';\r\nimport ListContainer from '../list/ListContainer';\r\nimport DistributorItem from './DistributorItem';\r\nimport { actionBeginListDistributors, actionToggleDistributor, actionDeleteDistributor, actionGetDistributors, actionMessageDistributor } from './DistributorAction';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\n\r\nclass DistributorListContainer extends Component { \r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentPage: 0\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.beginList();\r\n }\r\n\r\n handlePageClick = (data) => {\r\n this.props.getDistributors(data.selected);\r\n this.setState({ currentPage: data.selected });\r\n };\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.DISTRIBUTORS_ADD);\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.props.distributors ?\r\n \r\n : null\r\n }\r\n {\r\n this.props.message ?\r\n {this.props.message}\r\n : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n distributors: state.distributor.items,\r\n pageCount: state.distributor.totalPages,\r\n message: state.distributor.messageList,\r\n messageListAction: state.distributor.messageListAction\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n beginList: () => dispatch(actionBeginListDistributors()),\r\n toggle: (distributorId) => dispatch(actionToggleDistributor(distributorId)),\r\n delete: (distributorId, isFromList) => dispatch(actionDeleteDistributor(distributorId, isFromList)),\r\n getDistributors: (page) => dispatch(actionGetDistributors(page)),\r\n resetMessage: () => dispatch(actionMessageDistributor(null))\r\n }\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(DistributorListContainer));\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\nimport ButtonGroup from '../buttons/ButtonGroup';\r\nimport BaseItem from '../items/BaseItem';\r\nimport { connect } from 'react-redux';\r\nimport { actionOpenProductSelected, actionRemoveProductDistributor } from './DistributorAction';\r\n\r\nclass ProductDistributorItem extends BaseItem {\r\n\r\n handleEdit = (event) => {\r\n event.preventDefault();\r\n this.props.openSelected(this.props.item);\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n this.props.removeProduct(this.props.item.productId);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.item.productName}\r\n \r\n \r\n {this.props.url}\r\n \r\n \r\n \r\n {\r\n this.state.isMouseInside ? : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nProductDistributorItem.propTypes = {\r\n item: PropTypes.object\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n openSelected: (product) => dispatch(actionOpenProductSelected(product)),\r\n removeProduct: (productId) => dispatch(actionRemoveProductDistributor(productId))\r\n };\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(ProductDistributorItem);\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ProductDistributorItem from './ProductDistributorItem';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ProductsDistributor = (props) => {\r\n let productsItems = null;\r\n if (props.items) {\r\n productsItems = props.items.map(item => );\r\n }\r\n\r\n return ( \r\n \r\n \r\n {productsItems}\r\n \r\n \r\n );\r\n};\r\n\r\nProductsDistributor.propTypes = {\r\n items: PropTypes.array\r\n};\r\n\r\nexport default ProductsDistributor;\r\n","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Row, Col, CustomInput } from 'reactstrap';\r\n\r\nclass ProductSelectItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isMouseInside: false\r\n };\r\n }\r\n\r\n mouseEnter = () => {\r\n this.setState({ isMouseInside: true });\r\n };\r\n\r\n mouseLeave = () => {\r\n this.setState({ isMouseInside: false });\r\n };\r\n\r\n handleChange = (event) => {\r\n this.props.handleChangeItem(this.props.item, this.props.source);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(ProductSelectItem);\r\n","import React from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport ProductSelectItem from './ProductSelectItem';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ProductSelectList = (props) => {\r\n let productsItems = null;\r\n if (props.items) {\r\n productsItems = props.items.map(item => );\r\n }\r\n\r\n return ( \r\n \r\n \r\n {productsItems}\r\n \r\n \r\n );\r\n};\r\n\r\nProductSelectList.propTypes = {\r\n items: PropTypes.array\r\n};\r\n\r\nexport default ProductSelectList;\r\n","import React, { Component, Fragment } from 'react';\r\nimport Modal from 'react-modal';\r\nimport { Container, Row, Col, CustomInput, Alert } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { actionCloseProductsSelect, actionUpdateProductsDistributor, actionConfirmProductsDistributor, actionSelectAllProductsDistributor, actionChangeValueSelectAll } from './DistributorAction';\r\nimport '../Admin.css';\r\nimport ProductFilter from '../products/ProductFilter';\r\nimport ProductSelectList from './ProductSelectList';\r\nimport PaginationContainer from '../pagination/PaginationContainer';\r\nimport { actionGetProductsResume, actionSetSearchProduct } from '../products/ProductAction';\r\nimport DistributorConstants from './DistributorConstants';\r\nimport ButtonModal from '../buttons/ButtonModal';\r\n\r\nModal.setAppElement('#root');\r\n\r\nclass ProductSelectorModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentPage: 0\r\n }\r\n }\r\n\r\n handleClose = () => { \r\n this.props.close();\r\n this.setState({ currentPage: 0 });\r\n };\r\n\r\n handleContinue = () => {\r\n this.props.confirm();\r\n this.handleClose();\r\n };\r\n\r\n handleSort = (event) => {\r\n this.props.getProductsResume(this.props.search, event.target.value);\r\n };\r\n\r\n handleChangeSearch = (event) => {\r\n this.props.changeSearch(event.target.value); \r\n };\r\n\r\n handleSearchEnter = (event) => {\r\n if (event.key === 'Enter') {\r\n this.props.getProductsResume(this.props.search, this.props.sortBy);\r\n }\r\n };\r\n\r\n handleSearchButton = (event) => {\r\n event.preventDefault();\r\n this.props.getProductsResume(this.props.search, this.props.sortBy);\r\n };\r\n\r\n handlePageClick = (data) => {\r\n this.setState({ currentPage: data.selected });\r\n };\r\n\r\n handleChangeSelectAll = () => {\r\n this.props.changeSelectAll(!this.props.selectedAll, this.props.productsComplete);\r\n };\r\n\r\n getProductsToList = (products, productsSelected, pageNumber) => {\r\n if (products) {\r\n let productsPaged = products.slice((pageNumber - 1) * DistributorConstants.PAGE_SIZE, pageNumber * DistributorConstants.PAGE_SIZE);\r\n return productsPaged.map(p => {\r\n const optionSelected = productsSelected.find(ps => ps.productId === p.id);\r\n if (optionSelected) {\r\n return { ...p, checked: true };\r\n } else {\r\n return { ...p, checked: false };\r\n }\r\n });\r\n } else {\r\n return [];\r\n }\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.productsComplete !== this.props.productsComplete) {\r\n if (this.props.productsComplete) {\r\n this.props.changeValueSelectAll(this.props.productsComplete.every(p => this.props.productsSelected.find(ps => ps.productId === p.id)));\r\n } else {\r\n this.props.changeValueSelectAll(false);\r\n } \r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Add Products

\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {\r\n this.props.productsComplete ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : null\r\n }\r\n {\r\n this.props.message ?\r\n {this.props.message}\r\n : null\r\n }\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapProductsSelect = (products, productsSelected, selectedAll) => {\r\n if (products) {\r\n return products.map(p => {\r\n if (selectedAll) {\r\n return { ...p, checked: true };\r\n } else {\r\n const optionSelected = productsSelected.find(ps => ps.productId === p.id);\r\n if (optionSelected) {\r\n return { ...p, checked: true };\r\n } else {\r\n return { ...p, checked: false };\r\n }\r\n } \r\n });\r\n } else {\r\n return [];\r\n }\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n modalIsOpen: state.distributor.modalSelectIsOpen,\r\n sortBy: state.product.sortBy,\r\n search: state.product.search,\r\n pageCount: state.product.totalPages,\r\n productsComplete: state.product.items,\r\n productsSelected: state.distributor.productsTemp,\r\n products: mapProductsSelect(state.product.items, state.distributor.productsTemp, state.distributor.selectedAll),\r\n message: state.product.messageList,\r\n selectedAll: state.distributor.selectedAll\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n close: () => dispatch(actionCloseProductsSelect()),\r\n updateProducts: (product, products) => dispatch(actionUpdateProductsDistributor(product, products)),\r\n confirm: () => dispatch(actionConfirmProductsDistributor()),\r\n changeSelectAll: (flag, products) => dispatch(actionSelectAllProductsDistributor(flag, products)),\r\n getProductsResume: (name, sortBy) => dispatch(actionGetProductsResume(name, DistributorConstants.PAGE_SIZE, sortBy)),\r\n changeSearch: (search) => dispatch(actionSetSearchProduct(search)),\r\n changeValueSelectAll: (flag) => dispatch(actionChangeValueSelectAll(flag))\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ProductSelectorModal));\r\n","import React, { Component } from 'react';\r\nimport Modal from 'react-modal';\r\nimport { Container, Button, Row, Col, Label, Input, FormGroup } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport Back from '../../images/chevLeft.png';\r\nimport { actionCloseProductSelected, actionChangeValueProductDistributor, actionUpdateProductDistributorSelected } from './DistributorAction';\r\n\r\nclass ProductSelectedModal extends Component {\r\n handleClose = () => {\r\n this.props.close();\r\n };\r\n\r\n handleChange = (event) => {\r\n this.props.changeValue(event.target.id, event.target.value);\r\n };\r\n\r\n handleSave = () => {\r\n this.props.saveChanges();\r\n this.props.close();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n

{this.props.product.sku}

\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 {this.props.product.category.name}\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 {this.props.product.sku}\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 {this.props.product.productName}\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 \r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n modalIsOpen: state.distributor.modalSelectedIsOpen,\r\n product: state.distributor.productSelected\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n close: () => dispatch(actionCloseProductSelected()),\r\n changeValue: (propertie, value) => dispatch(actionChangeValueProductDistributor(propertie, value)),\r\n saveChanges: () => dispatch(actionUpdateProductDistributorSelected())\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ProductSelectedModal));\r\n","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { Container, Row, Col, TabContent, TabPane, Nav, NavItem, NavLink, FormGroup, Label, Input, CustomInput, Alert } from 'reactstrap';\r\nimport HeaderSave from '../header/HeaderSave';\r\nimport PathsApp from '../../utils/PathsApp';\r\nimport classnames from 'classnames';\r\nimport ButtonAdd from '../buttons/ButtonAdd';\r\nimport ProductsDistributor from './ProductsDistributor';\r\nimport ProductSelectorModal from './ProductSelectorModal';\r\nimport { actionOpenProductsSelect, actionBeginAddDistributor, actionChangeValueDistributor, actionSaveAddDistributor, actionMessageDistributorDetail, actionBeginEditDistributor, actionSaveEditDistributor, actionToggleDistributor, actionDeleteDistributor, actionSetInvalidsProductsDistributor, actionResetInvalidProductsDistributor } from './DistributorAction';\r\nimport ProductSelectedModal from './ProductSelectedModal';\r\nimport { actionGetProductsResume, actionResetMessageList } from '../products/ProductAction';\r\nimport DistributorConstants from './DistributorConstants';\r\nimport { Redirect } from 'react-router';\r\nimport AlertContainer from '../../alerts/AlertContainer';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { actionGetCategories } from '../categories/CategoryActions';\r\nimport DistributorRequestModel from './DistributorRequestModel';\r\nimport ProductSortEnum from '../products/ProductSortEnum';\r\n\r\nclass DistributorContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toggle = this.toggle.bind(this);\r\n this.state = {\r\n activeTab: '1',\r\n token: uuidv4().toString(),\r\n urlWizard: window.location.origin + '/explore'\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getCategories();\r\n this.props.getProducts(ProductSortEnum.SKU);\r\n if (this.props.match.path === PathsApp.DISTRIBUTORS_ADD) {\r\n this.props.beginAdd(this.state.token);\r\n } else {\r\n this.props.beginEdit(this.props.match.params.id, (distributorToken, isRegion) => {\r\n if (!isRegion) {\r\n this.setState({\r\n token: distributorToken\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleSave = (event) => {\r\n event.preventDefault();\r\n if (this.isValidProductDistributor()) {\r\n console.log('continue');\r\n this.props.resetInvalidProducts();\r\n this.props.resetMessage();\r\n if (this.props.match.path === PathsApp.DISTRIBUTORS_ADD) {\r\n this.props.saveAdd(this.props.currentDistributor);\r\n } else {\r\n this.props.saveEdit(this.props.currentDistributor);\r\n }\r\n } else {\r\n console.log('stop');\r\n this.props.setMessage(DistributorConstants.MESSAGE_ADD_ERROR('Invalid products distributor url.'));\r\n }\r\n };\r\n\r\n isValidProductDistributor() {\r\n const productsDistributor = this.props.currentDistributor.productsDistributor.filter(pd => pd.isEnabled);\r\n if (productsDistributor && productsDistributor.length > 0) {\r\n const invalids = productsDistributor.filter(pd => {\r\n if (pd.url) {\r\n const urlPattern = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/gm;\r\n return !pd.url.match(urlPattern);\r\n } else {\r\n return true;\r\n }\r\n });\r\n if (invalids && invalids.length > 0) {\r\n this.props.setInvalidsProducts(invalids);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleGetBack = (event) => {\r\n event.preventDefault();\r\n this.props.history.push(PathsApp.DISTRIBUTORS_ROOT);\r\n };\r\n\r\n handleVisible = (event) => {\r\n event.preventDefault();\r\n if (!DistributorRequestModel.isEmpty(this.props.currentDistributor)) {\r\n this.props.toggle(this.props.currentDistributor.id);\r\n } else {\r\n console.log('TODO-can not toggle message');\r\n }\r\n };\r\n\r\n handleDelete = (event) => {\r\n event.preventDefault();\r\n if (!DistributorRequestModel.isEmpty(this.props.currentDistributor)) {\r\n this.props.delete(this.props.currentDistributor.id, false);\r\n } else {\r\n console.log('TODO-can not delete message');\r\n }\r\n };\r\n\r\n toggle = (tab) => {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab\r\n });\r\n }\r\n };\r\n\r\n handleAdd = (event) => {\r\n event.preventDefault();\r\n this.props.openSelect(this.props.products);\r\n };\r\n\r\n handleChangeInput = (event) => {\r\n if (event.target.id === 'isRegion') {\r\n if (this.props.currentDistributor.isRegion) {\r\n this.props.changeInputValue('token', this.state.token);\r\n } else {\r\n this.props.changeInputValue('token', '');\r\n this.props.changeInputValue('productDomain', '');\r\n }\r\n this.props.changeInputValue(event.target.id, !this.props.currentDistributor.isRegion);\r\n } else {\r\n this.props.changeInputValue(event.target.id, event.target.value);\r\n }\r\n };\r\n\r\n existsSelected = () => {\r\n return this.props.currentDistributor.productsDistributor && this.props.currentDistributor.productsDistributor.length > 0 && this.props.currentDistributor.productsDistributor.find(pd => pd.isEnabled) !== undefined;\r\n };\r\n\r\n generateToken = () => {\r\n this.props.changeInputValue('token', uuidv4().toString());\r\n };\r\n\r\n componentWillUnmount() {\r\n this.props.resetMessageList();\r\n this.props.resetMessage();\r\n }\r\n\r\n render() {\r\n if (!this.props.currentDistributor.exists) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {this.props.messageAction ? window.scrollTo(0, 0) : null}\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 \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.props.currentDistributor.isRegion\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.props.categories ? this.props.categories.map(c =>\r\n \r\n \r\n {`${this.state.urlWizard}/${c.code.toLowerCase()}/${this.props.currentDistributor.token}`}\r\n \r\n )\r\n : null\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 this.existsSelected()\r\n ? null\r\n : {DistributorConstants.MESSAGE_PRODUCTSDISTRIBUTOR_NOT_SELECTED}\r\n }\r\n pd.isEnabled)} />\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\nconst mapStateToProps = state => {\r\n return {\r\n currentDistributor: state.distributor.selected,\r\n sortBy: state.product.sortBy,\r\n products: state.product.items,\r\n messageAction: state.distributor.messageAction,\r\n categories: state.category.items\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n openSelect: (products) => dispatch(actionOpenProductsSelect(products)),\r\n beginAdd: (token) => dispatch(actionBeginAddDistributor(token)),\r\n changeInputValue: (propertie, value) => dispatch(actionChangeValueDistributor(propertie, value)),\r\n getProducts: (sortBy) => dispatch(actionGetProductsResume('', DistributorConstants.PAGE_SIZE, sortBy)),\r\n saveAdd: (distributor) => dispatch(actionSaveAddDistributor(distributor)),\r\n resetMessage: () => dispatch(actionMessageDistributorDetail(null)),\r\n getCategories: () => dispatch(actionGetCategories()),\r\n beginEdit: (distributorId, callback) => dispatch(actionBeginEditDistributor(distributorId, callback)),\r\n saveEdit: (distributor) => dispatch(actionSaveEditDistributor(distributor)),\r\n toggle: (distributorId) => dispatch(actionToggleDistributor(distributorId)),\r\n delete: (distributorId, isFromList) => dispatch(actionDeleteDistributor(distributorId, isFromList)),\r\n resetMessageList: () => dispatch(actionResetMessageList()),\r\n setInvalidsProducts: (invalids) => dispatch(actionSetInvalidsProductsDistributor(invalids)),\r\n setMessage: (message) => dispatch(actionMessageDistributorDetail(message)),\r\n resetInvalidProducts: () => dispatch(actionResetInvalidProductsDistributor())\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(DistributorContainer));\r\n","import React, { Component } from 'react';\r\nimport { Switch } from 'react-router'\r\nimport QuestionListContainer from '../admin/questions/QuestionListContainer';\r\nimport ProductListContainer from '../admin/products/ProductListContainer';\r\nimport CategoryContainer from '../admin/categories/CategoryContainer';\r\nimport LayoutContainer from '../admin/layout/LayoutContainer';\r\nimport MasterAdmin from '../admin/master/MasterAdmin';\r\nimport MasterLogin from '../admin/master/MasterLogin';\r\nimport MasterPreview from '../admin/master/MasterPreview';\r\nimport AppRoute from './AppRoute';\r\nimport LoginContainer from '../admin/login/LoginContainer';\r\nimport ProductContainer from '../admin/products/ProductContainer';\r\nimport FeatureContainer from '../admin/features/FeatureContainer';\r\nimport OptionContainer from '../admin/options/OptionContainer';\r\nimport QuestionContainer from '../admin/questions/QuestionContainer';\r\nimport PreviewContainer from '../admin/preview/PreviewContainer';\r\nimport PathsApp from '../utils/PathsApp';\r\nimport HomeContainer from '../client/home/HomeContainer';\r\nimport MasterClient from '../client/master/MasterClient';\r\nimport StepsContainer from '../client/steps/StepsContainer';\r\nimport ResultContainer from '../client/result/ResultContainer';\r\nimport { connect } from 'react-redux';\r\nimport { actionGetSession } from '../admin/login/LoginAction';\r\nimport { withRouter } from 'react-router-dom';\r\nimport UnauthenticatedRoute from './UnauthenticatedRoute';\r\nimport AuthenticatedRoute from './AuthenticatedRoute';\r\nimport BrowserUtil from '../utils/BrowserUtil';\r\nimport InternetExplorerContainer from '../browser/InternetExplorerContainer';\r\nimport DistributorListContainer from '../admin/distributors/DistributorListContainer';\r\nimport DistributorContainer from '../admin/distributors/DistributorContainer';\r\n\r\nclass App extends Component {\r\n componentDidMount() {\r\n this.props.getSession();\r\n }\r\n\r\n render() {\r\n if (BrowserUtil.ISIE()) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\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 \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } \r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n isAuthenticated: state.login.user ? true : false,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getSession: () => dispatch(actionGetSession())\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(App));","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import CategoryConstants from \"./CategoryConstants\";\r\nimport BaseModel from '../../models/BaseModel';\r\n\r\nconst initialState = {\r\n items: null,\r\n selected: {},\r\n message: null\r\n};\r\n\r\nconst setCategorySaved = (items, newCategory) => {\r\n return items.map((item, i) => {\r\n return i === 0 ? { ...item, id: newCategory.id, name: newCategory.name } : item;\r\n });\r\n};\r\n\r\nconst removeCategory = (items) => {\r\n return items.filter((item, i) => {\r\n return i !== 0;\r\n });\r\n};\r\n\r\nconst setCategoryEdited = (items, editedCategory) => {\r\n return items.map((item) => {\r\n return item.id === editedCategory.id ? { ...item, name: editedCategory.name } : item;\r\n });\r\n};\r\n\r\nconst setCategoryDeleted = (items, id) => {\r\n return items.filter((item) => {\r\n return item.id !== id;\r\n });\r\n};\r\n\r\nconst CategoryReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case CategoryConstants.GET_ALL_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items\r\n };\r\n case CategoryConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: action.selected\r\n };\r\n case CategoryConstants.BEGIN_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: [BaseModel.getEmpty(), ...state.items]\r\n };\r\n case CategoryConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setCategorySaved(state.items, action.newCategory)\r\n };\r\n case CategoryConstants.CANCEL_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: removeCategory(state.items)\r\n };\r\n case CategoryConstants.SAVE_EDIT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setCategoryEdited(state.items, action.editedCategory)\r\n };\r\n case CategoryConstants.DELETE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setCategoryDeleted(state.items, action.id)\r\n };\r\n case CategoryConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default CategoryReducer;","import FeatureConstants from \"./FeatureConstants\";\r\nimport BaseModel from '../../models/BaseModel';\r\n\r\nconst initialState = {\r\n items: null,\r\n selected: {},\r\n message: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n};\r\n\r\nconst setFeatureSaved = (items, newFeature) => {\r\n return items.map((item, i) => {\r\n return i === 0 ? { ...item, id: newFeature.id, name: newFeature.name, description: newFeature.description } : item;\r\n });\r\n};\r\n\r\nconst removeFeature = (items) => {\r\n return items.filter((item, i) => {\r\n return i !== 0;\r\n });\r\n};\r\n\r\nconst setFeatureEdited = (items, editedFeature) => {\r\n return items.map((item) => {\r\n return item.id === editedFeature.id ? { ...item, name: editedFeature.name, description: editedFeature.description } : item;\r\n });\r\n};\r\n\r\nconst setFeatureDeleted = (items, id) => {\r\n return items.filter((item) => {\r\n return item.id !== id;\r\n });\r\n};\r\n\r\nconst FeatureReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FeatureConstants.GET_ALL_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items,\r\n totalItems: action.totalItems,\r\n totalPages: action.totalPages\r\n };\r\n case FeatureConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: action.selected\r\n };\r\n case FeatureConstants.BEGIN_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: [BaseModel.getEmpty(), ...state.items]\r\n };\r\n case FeatureConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setFeatureSaved(state.items, action.newFeature)\r\n };\r\n case FeatureConstants.CANCEL_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: removeFeature(state.items)\r\n };\r\n case FeatureConstants.SAVE_EDIT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setFeatureEdited(state.items, action.editedFeature)\r\n };\r\n case FeatureConstants.DELETE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setFeatureDeleted(state.items, action.id)\r\n };\r\n case FeatureConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default FeatureReducer;","import OptionConstants from \"./OptionConstants\";\r\nimport BaseModel from '../../models/BaseModel';\r\n\r\nconst initialState = {\r\n items: null,\r\n message: null,\r\n totalItems: 0,\r\n totalPages: 0\r\n};\r\n\r\nconst setOptionSaved = (items, newOption) => {\r\n return items.map((item, i) => {\r\n return i === 0 ? { ...item, id: newOption.id, name: newOption.name, description: newOption.description } : item;\r\n });\r\n};\r\n\r\nconst removeOption = (items) => {\r\n return items.filter((item, i) => {\r\n return i !== 0;\r\n });\r\n};\r\n\r\nconst setOptionEdited = (items, editedOption) => {\r\n return items.map((item) => {\r\n return item.id === editedOption.id ? { ...item, name: editedOption.name, description: editedOption.description } : item;\r\n });\r\n};\r\n\r\nconst setOptionDeleted = (items, id) => {\r\n return items.filter((item) => {\r\n return item.id !== id;\r\n });\r\n};\r\n\r\nconst OptionReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case OptionConstants.GET_ALL_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items,\r\n totalItems: action.totalItems,\r\n totalPages: action.totalPages\r\n };\r\n case OptionConstants.BEGIN_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: [BaseModel.getEmpty(), ...state.items]\r\n };\r\n case OptionConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setOptionSaved(state.items, action.newOption)\r\n };\r\n case OptionConstants.CANCEL_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: removeOption(state.items)\r\n };\r\n case OptionConstants.SAVE_EDIT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setOptionEdited(state.items, action.editedOption)\r\n };\r\n case OptionConstants.DELETE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setOptionDeleted(state.items, action.id)\r\n };\r\n case OptionConstants.RESET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: null\r\n };\r\n case OptionConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n case OptionConstants.ORDER_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.options\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default OptionReducer;\r\n","import HelperConstants from \"./HelperConstants\";\r\n\r\nconst initialState = {\r\n modalIsOpen: false\r\n};\r\n\r\nconst HelperReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case HelperConstants.OPEN_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: true\r\n };\r\n case HelperConstants.CLOSE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: false\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default HelperReducer;\r\n","import WizardConstants from \"./WizardConstants\";\r\n\r\nconst initialState = {\r\n data: null,\r\n currentQuestion: null,\r\n message: null,\r\n lastIndex: 0,\r\n category: null,\r\n numberProducts: 0,\r\n loading: false\r\n};\r\n\r\nconst getQuestion = (data, index) => {\r\n return data && data[index] ? data[index] : null;\r\n};\r\n\r\nconst updateOption = (isMultipleChoice, options, optionId, isChecked) => {\r\n return options.map((item) => {\r\n return item.id === optionId ? { ...item, checked: isChecked } : isMultipleChoice ? item : { ...item, checked: false };\r\n });\r\n};\r\n\r\nconst updateData = (data, questionId, options) => {\r\n return data.map((item) => {\r\n return item.id === questionId ? { ...item, options: options } : item;\r\n });\r\n};\r\n\r\nconst backData = (data, indexBack) => {\r\n data[indexBack].options = data[indexBack].options.map(item => {\r\n return { ...item, checked: false };\r\n });\r\n return data;\r\n};\r\n\r\nconst WizardReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case WizardConstants.SET_CATEGORY_ACTION_TYPE:\r\n return {\r\n ...state,\r\n category: action.category\r\n };\r\n case WizardConstants.GET_SETUP_ACTION_TYPE:\r\n return {\r\n ...state,\r\n data: action.data,\r\n loading: false\r\n };\r\n case WizardConstants.GET_QUESTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n currentQuestion: getQuestion(state.data, action.index),\r\n lastIndex: action.index\r\n };\r\n case WizardConstants.UPDATE_OPTION_ACTION_TYPE:\r\n const updatedOptions = updateOption(state.currentQuestion.isMultipleChoice, state.currentQuestion.options, action.optionId, action.isChecked);\r\n const updatedData = updateData(state.data, state.currentQuestion.id, updatedOptions);\r\n return {\r\n ...state,\r\n data: updatedData,\r\n currentQuestion: {\r\n ...state.currentQuestion,\r\n options: updatedOptions\r\n }\r\n };\r\n case WizardConstants.RESET_SELECTED_ACTION_TYPE:\r\n return {\r\n ...state,\r\n currentQuestion: null,\r\n data: null,\r\n lastIndex: 0\r\n };\r\n case WizardConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n case WizardConstants.GET_NUMBER_PRODUCTS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n numberProducts: action.numberProducts\r\n };\r\n case WizardConstants.LOADING_ACTION_TYPE:\r\n return {\r\n ...state,\r\n loading: true\r\n };\r\n case WizardConstants.BACK_ACTION_TYPE:\r\n return {\r\n ...state,\r\n data: backData(state.data, action.indexBack)\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default WizardReducer;\r\n","import StartOverConstants from \"./StartOverConstants\";\r\n\r\nconst initialState = {\r\n modalIsOpen: false\r\n};\r\n\r\nconst StartOverReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case StartOverConstants.OPEN_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: true\r\n };\r\n case StartOverConstants.CLOSE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: false\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default StartOverReducer;\r\n","import QuestionConstants from \"./QuestionConstants\";\r\nimport QuestionModel from \"./QuestionModel\";\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\n\r\nconst initialState = {\r\n items: null,\r\n category: null,\r\n selected: QuestionModel.getEmpty(),\r\n layoutTypes: [],\r\n messageList: null,\r\n messageOptions: null,\r\n tempAnswers: [],\r\n messageListAction: null,\r\n messageAction: null\r\n};\r\n\r\nconst setQuestionDeleted = (items, id) => {\r\n return items.filter((item) => {\r\n return item.id !== id;\r\n });\r\n};\r\n\r\nconst setQuestionToggle = (items, id) => {\r\n return items.map((item) => {\r\n return item.id === id ? { ...item, isEnabled: !item.isEnabled } : item;\r\n });\r\n};\r\n\r\nconst updateAnswers = (answers, answerUpdated, isEnabled) => {\r\n if (answers.length === 0) {\r\n answers.push({ ...answerUpdated, isEnabled: true });\r\n } else {\r\n if (isEnabled) {\r\n const found = answers.find(answer => answer.option.id === answerUpdated.option.id);\r\n if (!found) {\r\n answers.push({ ...answerUpdated, isEnabled: true });\r\n }\r\n } else {\r\n answers = answers.filter(answer => answer.option.id !== answerUpdated.option.id);\r\n }\r\n }\r\n return answers;\r\n};\r\n\r\nconst updateImage = (answers, optionId, imageUrl) => {\r\n return answers.map(answer => {\r\n return answer.option.id === optionId ? { ...answer, imageUrl: imageUrl } : answer\r\n });\r\n};\r\n\r\nconst updateTempAnswers = (tempAnswers, optionId, imageUrl) => {\r\n if (tempAnswers.length === 0) {\r\n tempAnswers.push({ optionId: optionId, imageUrl: imageUrl });\r\n } else {\r\n const found = tempAnswers.find(answer => answer.optionId === optionId);\r\n if (found) {\r\n tempAnswers = tempAnswers.map(answer => {\r\n return answer.optionId === optionId ? { ...answer, imageUrl: imageUrl } : answer\r\n });\r\n } else {\r\n tempAnswers.push({ optionId: optionId, imageUrl: imageUrl });\r\n }\r\n }\r\n return tempAnswers;\r\n};\r\n\r\nconst updateOrderAnswers = (answers, newOptions) => {\r\n if (answers && answers.length > 0) {\r\n answers = answers.map(answer => {\r\n const orderAnswer = newOptions.findIndex(option => {\r\n return option.id === answer.option.id;\r\n });\r\n if (orderAnswer > -1) {\r\n answer.orderNumber = orderAnswer;\r\n }\r\n return answer;\r\n });\r\n }\r\n return answers;\r\n};\r\n\r\nconst addRange = (ranges, range) => {\r\n ranges.push(range);\r\n return ranges;\r\n};\r\n\r\nconst updateRanges = (ranges, rangeKey, field, value) => {\r\n return ranges.map(range => {\r\n if (range.key === rangeKey) {\r\n range[field] = value;\r\n }\r\n return range;\r\n });\r\n};\r\n\r\nconst deleteRange = (ranges, rangeKey, rangeId) => {\r\n if (rangeId === UuidUtil.EMPTY) { \r\n return ranges.filter(range => range.key !== rangeKey);\r\n } else {\r\n return ranges.map(range => {\r\n if (range.id === rangeId) {\r\n range.isEnabled = false;\r\n } \r\n return range;\r\n });\r\n }\r\n};\r\n\r\nconst QuestionAdminReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case QuestionConstants.GET_ALL_BY_CATEGORY_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items,\r\n category: action.category,\r\n selected: QuestionModel.getEmpty(),\r\n tempAnswers: []\r\n };\r\n case QuestionConstants.BEGIN_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: QuestionModel.getEmpty(),\r\n tempAnswers: []\r\n };\r\n case QuestionConstants.TOGGLE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setQuestionToggle(state.items, action.id),\r\n selected: { ...state.selected, isEnabled: !state.selected.isEnabled }\r\n };\r\n case QuestionConstants.DELETE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setQuestionDeleted(state.items, action.id),\r\n selected: !action.isFromList ? { ...state.selected, exists: false } : { ...state.selected }\r\n };\r\n case QuestionConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n tempAnswers: action.tempAnswers,\r\n selected: action.question\r\n };\r\n case QuestionConstants.CHANGE_VALUE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, [action.propertie]: action.value }\r\n };\r\n case QuestionConstants.CHANGE_ANSWER_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, answers: updateAnswers(state.selected.answers, action.answer, action.isEnabled) }\r\n };\r\n case QuestionConstants.RESET_ANSWERS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, answers: [] }\r\n };\r\n case QuestionConstants.GET_LAYOUT_TYPES_ACTION_TYPE:\r\n return {\r\n ...state,\r\n layoutTypes: action.layoutTypes\r\n };\r\n case QuestionConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, exists: false }\r\n };\r\n case QuestionConstants.SAVE_EDIT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, exists: false }\r\n };\r\n case QuestionConstants.MESSAGE_LIST_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageList: action.message\r\n };\r\n case QuestionConstants.MESSAGE_OPTIONS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageOptions: action.message\r\n };\r\n case QuestionConstants.ORDER_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.questions\r\n };\r\n case QuestionConstants.UPLOAD_IMAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, answers: updateImage(state.selected.answers, action.optionId, action.imageUrl) },\r\n tempAnswers: updateTempAnswers(state.tempAnswers, action.optionId, action.imageUrl)\r\n };\r\n case QuestionConstants.MESSAGE_LIST_ACTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageListAction: action.messageListAction\r\n };\r\n case QuestionConstants.MESSAGE_ACTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageAction: action.messageAction\r\n }; \r\n case QuestionConstants.ORDER_ANSWERS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n answers: updateOrderAnswers(state.selected.answers, action.newOptions)\r\n }\r\n };\r\n case QuestionConstants.ADD_RANGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n ranges: addRange(state.selected.ranges, action.range)\r\n }\r\n };\r\n case QuestionConstants.CHANGE_VALUE_RANGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n ranges: updateRanges(state.selected.ranges, action.rangeKey, action.field, action.value)\r\n }\r\n };\r\n case QuestionConstants.DELETE_RANGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n ranges: deleteRange(state.selected.ranges, action.rangeKey, action.rangeId)\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default QuestionAdminReducer;\r\n","import ProductConstants from \"./ProductConstants\";\r\nimport ProductSortEnum from \"./ProductSortEnum\";\r\nimport ProductModel from \"./ProductModel\";\r\nimport UuidUtil from \"../../utils/UuidUtil\";\r\n\r\nconst initialState = {\r\n items: null,\r\n messageList: null,\r\n sortBy: ProductSortEnum.SKU,\r\n search: '',\r\n selected: ProductModel.getEmpty(),\r\n modalIsOpen: false,\r\n totalItems: 0,\r\n totalPages: 0,\r\n featureSelected: '',\r\n tempOptions: [],\r\n messageListAction: null,\r\n messageAction: null\r\n};\r\n\r\nconst setProductToggle = (items, id) => {\r\n return items.map((item) => {\r\n return item.id === id ? { ...item, isEnabled: !item.isEnabled } : item;\r\n });\r\n};\r\n\r\nconst setProductDeleted = (items, id) => {\r\n return items.filter((item) => {\r\n return item.id !== id;\r\n });\r\n};\r\n\r\nconst updateProductFeatureOptions = (productFeatures, optionSelected, featureSelected, productId) => {\r\n\r\n if (productFeatures.find(pf => pf.optionId === optionSelected.id)) {\r\n productFeatures = productFeatures.filter(pf => pf.optionId !== optionSelected.id); \r\n return productFeatures;\r\n } else {\r\n productFeatures.push({\r\n featureId: optionSelected.featureId,\r\n id: UuidUtil.EMPTY,\r\n optionId: optionSelected.id,\r\n optionName: optionSelected.name,\r\n productId: productId\r\n });\r\n \r\n return productFeatures;\r\n }\r\n};\r\n\r\nconst updateProductFeatures = (productFeatures, featureSelected) => {\r\n if (productFeatures.find(pf => pf.featureId === featureSelected)) {\r\n return productFeatures.filter(pf => {\r\n return pf.featureId !== featureSelected;\r\n });\r\n }\r\n else {\r\n return productFeatures;\r\n }\r\n};\r\n\r\nconst cancelOptions = (productFeatures, tempOptions, featureSelected) => {\r\n if (tempOptions.length === 0) {\r\n return productFeatures.filter(pf => {\r\n return pf.featureId !== featureSelected;\r\n });\r\n } else {\r\n const options = productFeatures.filter(pf => pf.featureId !== featureSelected);\r\n options.push(...tempOptions);\r\n return options;\r\n }\r\n};\r\n\r\nconst ProductAdminReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case ProductConstants.GET_ALL_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items,\r\n selected: ProductModel.getEmpty(),\r\n totalItems: action.totalItems,\r\n totalPages: action.totalPages\r\n };\r\n case ProductConstants.MESSAGE_LIST_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageList: action.message\r\n };\r\n case ProductConstants.SET_ORDER_BY_ACTION_TYPE:\r\n return {\r\n ...state,\r\n sortBy: action.sortBy\r\n };\r\n case ProductConstants.SET_SEARCH_ACTION_TYPE:\r\n return {\r\n ...state,\r\n search: action.search\r\n };\r\n case ProductConstants.TOGGLE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setProductToggle(state.items, action.id),\r\n selected: { ...state.selected, isEnabled: !state.selected.isEnabled }\r\n };\r\n case ProductConstants.DELETE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setProductDeleted(state.items, action.id),\r\n selected: !action.isFromList ? { ...state.selected, exists: false } : { ...state.selected }\r\n };\r\n case ProductConstants.BEGIN_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: ProductModel.getEmpty()\r\n };\r\n case ProductConstants.CHANGE_VALUE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, [action.propertie]: action.value }\r\n };\r\n case ProductConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: action.product\r\n };\r\n case ProductConstants.OPEN_OPTIONS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: true,\r\n featureSelected: action.featureSelected,\r\n tempOptions: action.options\r\n };\r\n case ProductConstants.CLOSE_OPTIONS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: false\r\n };\r\n case ProductConstants.UPDATE_OPTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, productFeatures: updateProductFeatureOptions(state.selected.productFeatures, action.optionSelected, state.featureSelected, state.selected.id) }\r\n };\r\n case ProductConstants.UPDATE_FEATURE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, productFeatures: updateProductFeatures(state.selected.productFeatures, action.featureSelected, state.selected.id) }\r\n };\r\n case ProductConstants.CANCEL_OPTIONS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, productFeatures: cancelOptions(state.selected.productFeatures, state.tempOptions, state.featureSelected) }\r\n };\r\n case ProductConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, exists: false }\r\n };\r\n case ProductConstants.SAVE_EDIT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, exists: false }\r\n };\r\n case ProductConstants.MESSAGE_LIST_ACTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageListAction: action.messageListAction\r\n };\r\n case ProductConstants.MESSAGE_ACTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageAction: action.messageAction\r\n };\r\n case ProductConstants.GET_ALL_RESUME_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items,\r\n selected: ProductModel.getEmpty(),\r\n totalItems: action.totalItems,\r\n totalPages: action.totalPages\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default ProductAdminReducer;\r\n","export default class LayoutModel {\r\n constructor(id, title, titleResult, description, descriptionResult, imageUrl, discoverMoreResult) {\r\n this.id = id;\r\n this.title = title;\r\n this.titleResult = titleResult;\r\n this.description = description;\r\n this.descriptionResult = descriptionResult;\r\n this.imageUrl = imageUrl;\r\n this.discoverMoreResult = discoverMoreResult;\r\n }\r\n\r\n static getEmpty = () => {\r\n return {\r\n id: '',\r\n title: '',\r\n titleResult: '',\r\n description: '',\r\n descriptionResult: '',\r\n imageUrl: '',\r\n discoverMoreResult: ''\r\n }\r\n };\r\n}\r\n","import LayoutModel from \"./LayoutModel\";\r\nimport LayoutConstants from \"./LayoutConstants\";\r\n\r\nconst initialState = {\r\n layout: LayoutModel.getEmpty(),\r\n message: null\r\n};\r\n\r\nconst LayoutAdminReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case LayoutConstants.GET_ACTION_TYPE: \r\n return {\r\n ...state,\r\n layout: action.layout,\r\n category: action.category\r\n };\r\n case LayoutConstants.CHANGE_VALUE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n layout: { ...state.layout, [action.propertie]: action.value }\r\n };\r\n case LayoutConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n layout: { ...state.layout, id: action.id }\r\n };\r\n case LayoutConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default LayoutAdminReducer;","import ResultConstants from \"./ResultConstants\";\r\n\r\nconst initialState = {\r\n data: null,\r\n message: null,\r\n loading: false\r\n};\r\n\r\nconst ResultReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case ResultConstants.LOADING_ACTION_TYPE:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n case ResultConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n data: action.data,\r\n loading: false\r\n }; \r\n case ResultConstants.RESET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n data: null,\r\n message: null,\r\n loading: false\r\n };\r\n case ResultConstants.MESSAGE_RESULT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n case ResultConstants.GET_ALL_PRODUCTS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n data: action.data,\r\n loading: false\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default ResultReducer;\r\n","import PreviewConstants from \"./PreviewConstants\";\r\n\r\nconst initialState = {\r\n categoryId: '',\r\n message: null,\r\n modalIsOpen: false\r\n};\r\n\r\nconst PreviewReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case PreviewConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n message: action.message\r\n };\r\n case PreviewConstants.SELECT_OPEN_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: true\r\n };\r\n case PreviewConstants.SELECT_CLOSE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalIsOpen: false\r\n };\r\n case PreviewConstants.SET_CATEGORY_ACTION_TYPE:\r\n return {\r\n ...state,\r\n categoryId: action.categoryId\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default PreviewReducer;\r\n","import LoginConstants from \"./LoginConstants\";\r\n\r\nconst initialState = {\r\n user: null,\r\n lastError: null,\r\n errorMessage: null\r\n};\r\n\r\nconst LoginReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case LoginConstants.AUTHENTICATE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n user: action.user\r\n };\r\n case LoginConstants.LOGOUT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n user: null\r\n };\r\n case LoginConstants.LAST_ERROR_ACTION_TYPE:\r\n return {\r\n ...state,\r\n lastError: { error: action.error, time: new Date() }\r\n };\r\n case LoginConstants.MESSAGE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n errorMessage: action.message\r\n }; \r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default LoginReducer;\r\n","import LayoutModel from \"../../admin/layout/LayoutModel\";\r\nimport HomeConstants from \"./HomeConstants\";\r\n\r\nconst initialState = {\r\n layout: LayoutModel.getEmpty()\r\n};\r\n\r\nconst HomeReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case HomeConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n layout: action.layout\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default HomeReducer;\r\n","import UploadImageConstants from \"./UploadImageConstants\";\r\n\r\nconst initialState = {\r\n mapErrors: {}\r\n};\r\n\r\nconst UploadImageReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case UploadImageConstants.ERROR_ACTION_TYPE:\r\n return {\r\n ...state,\r\n mapErrors: { ...state.mapErrors, [action.key]: action.isError }\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default UploadImageReducer;\r\n","import DistributorConstants from \"./DistributorConstants\";\r\nimport DistributorRequestModel from \"./DistributorRequestModel\";\r\nimport ProductDistributorRequestModel from \"./ProductDistributorRequestModel\";\r\nimport BaseModel from \"../../models/BaseModel\";\r\n\r\nconst initialState = {\r\n items: null,\r\n messageList: null,\r\n search: '',\r\n totalItems: 0,\r\n totalPages: 0,\r\n messageListAction: null,\r\n messageAction: null,\r\n modalSelectIsOpen: false,\r\n modalSelectedIsOpen: false,\r\n selected: DistributorRequestModel.getEmpty(),\r\n productsTemp: [],\r\n productSelected: ProductDistributorRequestModel.getEmpty(),\r\n selectedAll: false\r\n};\r\n\r\nconst setDistributorToggle = (items, id) => {\r\n return items.map((item) => {\r\n return item.id === id ? { ...item, isEnabled: !item.isEnabled } : item;\r\n });\r\n};\r\n\r\nconst setDistributorDeleted = (items, id) => {\r\n return items.filter((item) => {\r\n return item.id !== id;\r\n });\r\n};\r\n\r\nconst updateProductsDistributor = (productsDistributor, product) => {\r\n if (productsDistributor.find(p => p.productId === product.id)) {\r\n productsDistributor = productsDistributor.filter(p => p.productId !== product.id);\r\n } else {\r\n productsDistributor.push(new ProductDistributorRequestModel(product.id, product.id, product.name, '', product.url, true, new BaseModel(product.category.id, product.category.name), product.sku));\r\n }\r\n return productsDistributor;\r\n};\r\n\r\nconst updateProductSelected = (productsDistributor, productSelected) => {\r\n productsDistributor = productsDistributor.map(pd => {\r\n if (pd.productId === productSelected.productId) {\r\n pd = productSelected;\r\n pd.isError = false;\r\n }\r\n return pd;\r\n });\r\n return productsDistributor;\r\n};\r\n\r\nconst removeProductDistributor = (productsDistributor, productId) => {\r\n productsDistributor = productsDistributor.map(pd => {\r\n if (pd.productId === productId) {\r\n pd.isEnabled = false;\r\n pd.isError = false;\r\n pd.url = '';\r\n }\r\n return pd;\r\n });\r\n return productsDistributor;\r\n};\r\n\r\nconst fixProductDomain = (productDomain) => {\r\n if (productDomain.slice(-1) === '/') {\r\n return fixProductDomain(productDomain.substring(0, productDomain.length - 1));\r\n } else {\r\n return productDomain;\r\n }\r\n};\r\n\r\nconst replaceUrl = (productDomain, url) => {\r\n if (url && url.length > 0) {\r\n try {\r\n const productUrl = new URL(url);\r\n return url.replace(productUrl.origin, productDomain);\r\n } catch (error) {\r\n return url;\r\n }\r\n } else {\r\n return productDomain;\r\n }\r\n};\r\n\r\nconst confirmProductsDistributor = (productsDistributor, productsTemp, urlProductDomain, isRegion) => {\r\n let productDomain = '';\r\n if (isRegion && urlProductDomain && urlProductDomain.length > 0) {\r\n productDomain = fixProductDomain(urlProductDomain);\r\n }\r\n if (productsDistributor.length === productsTemp.length && productsDistributor.every(pd => productsTemp.find(pt => pt.productId === pd.productId && pt.isEnabled === pd.isEnabled))) {\r\n if (isRegion && productDomain && productDomain.length > 0) {\r\n return productsDistributor.map(pd => {\r\n pd.url = replaceUrl(productDomain, pd.url);\r\n return pd;\r\n });\r\n } else {\r\n return productsDistributor;\r\n }\r\n } else {\r\n let intersection = productsDistributor.filter(pd => productsTemp.find(pt => pt.productId === pd.productId) ? true : false);\r\n if (isRegion && productDomain && productDomain.length > 0) {\r\n intersection = intersection.map(pd => {\r\n if (!pd.isEnabled) {\r\n pd.url = replaceUrl(productDomain, productsTemp.find(pt => pt.productId === pd.productId).url);\r\n } else {\r\n pd.url = replaceUrl(productDomain, pd.url);\r\n }\r\n pd.isEnabled = true;\r\n return pd;\r\n });\r\n } else {\r\n intersection = intersection.map(pd => {\r\n if (!pd.isEnabled) {\r\n pd.url = productsTemp.find(pt => pt.productId === pd.productId).url;\r\n }\r\n pd.isEnabled = true;\r\n return pd;\r\n });\r\n }\r\n if (intersection) {\r\n let originalMinusNews = productsDistributor.filter(pd => productsTemp.find(pt => pt.productId === pd.productId) ? false : true);\r\n originalMinusNews = originalMinusNews.map(pd => {\r\n pd.isEnabled = false;\r\n return pd;\r\n });\r\n originalMinusNews = originalMinusNews.concat(intersection);\r\n let newsMinusOriginal = productsTemp.filter(pt => productsDistributor.find(pd => pd.productId === pt.productId) ? false : true);\r\n if (isRegion && productDomain && productDomain.length > 0) {\r\n newsMinusOriginal = newsMinusOriginal.map(pd => {\r\n pd.isEnabled = true;\r\n pd.url = replaceUrl(productDomain, pd.url);\r\n return pd;\r\n });\r\n } else {\r\n newsMinusOriginal = newsMinusOriginal.map(pd => {\r\n pd.isEnabled = true;\r\n return pd;\r\n });\r\n }\r\n return originalMinusNews.concat(newsMinusOriginal);\r\n } else {\r\n return productsTemp;\r\n }\r\n }\r\n};\r\n\r\nconst setAllProducts = (products) => {\r\n return products.map(product => {\r\n return new ProductDistributorRequestModel(product.id, product.id, product.name, '', product.url, true, new BaseModel(product.category.id, product.category.name), product.sku);\r\n });\r\n};\r\n\r\nconst isSelected = (products, productsTemp) => {\r\n return products.every(p => productsTemp.find(pt => pt.productId === p.id));\r\n};\r\n\r\nconst setInvalids = (productsDistributor, invalids) => {\r\n return productsDistributor.map(pd => {\r\n const productInvalid = invalids.find(invalid => invalid.id === pd.id);\r\n if (productInvalid) {\r\n pd.isError = true;\r\n }\r\n return pd;\r\n });\r\n};\r\n\r\nconst resetInvalids = (productsDistributor) => {\r\n return productsDistributor.map(pd => {\r\n pd.isError = false;\r\n return pd;\r\n });\r\n};\r\n\r\nconst DistributorAdminReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case DistributorConstants.GET_ALL_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: action.items,\r\n totalItems: action.totalItems,\r\n totalPages: action.totalPages,\r\n selected: DistributorRequestModel.getEmpty(),\r\n };\r\n case DistributorConstants.TOGGLE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setDistributorToggle(state.items, action.id),\r\n selected: { ...state.selected, isEnabled: !state.selected.isEnabled }\r\n };\r\n case DistributorConstants.DELETE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n items: setDistributorDeleted(state.items, action.id),\r\n selected: !action.isFromList ? { ...state.selected, exists: false } : { ...state.selected }\r\n };\r\n case DistributorConstants.MESSAGE_LIST_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageList: action.message\r\n };\r\n case DistributorConstants.OPEN_SELECT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalSelectIsOpen: true,\r\n productsTemp: state.selected.productsDistributor.filter(pd => pd.isEnabled),\r\n selectedAll: action.products ? action.products.every(p => state.selected.productsDistributor.filter(pd => pd.isEnabled).find(pf => pf.productId === p.id)) : false\r\n };\r\n case DistributorConstants.CLOSE_SELECT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalSelectIsOpen: false,\r\n productsTemp: [],\r\n selectedAll: false\r\n };\r\n case DistributorConstants.OPEN_SELECTED_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalSelectedIsOpen: true,\r\n productSelected: action.product\r\n };\r\n case DistributorConstants.CLOSE_SELECTED_ACTION_TYPE:\r\n return {\r\n ...state,\r\n modalSelectedIsOpen: false,\r\n productSelected: ProductDistributorRequestModel.getEmpty()\r\n };\r\n case DistributorConstants.BEGIN_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: DistributorRequestModel.getEmpty()\r\n };\r\n case DistributorConstants.CHANGE_VALUE_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, [action.propertie]: action.value }\r\n };\r\n case DistributorConstants.UPDATE_PRODUCTS_ACTION_TYPE:\r\n const newProductsTemp = updateProductsDistributor(state.productsTemp, action.product);\r\n return {\r\n ...state,\r\n productsTemp: newProductsTemp,\r\n selectedAll: isSelected(action.products, newProductsTemp)\r\n };\r\n case DistributorConstants.CONFIRM_PRODUCTS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n productsDistributor: confirmProductsDistributor(state.selected.productsDistributor, state.productsTemp, state.selected.productDomain, state.selected.isRegion)\r\n }\r\n };\r\n case DistributorConstants.CHANGE_VALUE_PRODUCT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n productSelected: { ...state.productSelected, [action.propertie]: action.value }\r\n };\r\n case DistributorConstants.UPDATE_PRODUCT_SELECTED_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n productsDistributor: updateProductSelected(state.selected.productsDistributor, state.productSelected)\r\n }\r\n };\r\n case DistributorConstants.REMOVE_PRODUCT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n productsDistributor: removeProductDistributor(state.selected.productsDistributor, action.productId)\r\n }\r\n };\r\n case DistributorConstants.SELECT_ALL_PRODUCTS_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selectedAll: action.flag,\r\n productsTemp: action.flag ? setAllProducts(action.products) : []\r\n };\r\n case DistributorConstants.CHANGE_VALUE_SELECT_ALL_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selectedAll: action.flag\r\n };\r\n case DistributorConstants.MESSAGE_ACTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageAction: action.messageAction\r\n };\r\n case DistributorConstants.MESSAGE_LIST_ACTION_ACTION_TYPE:\r\n return {\r\n ...state,\r\n messageListAction: action.messageListAction\r\n };\r\n case DistributorConstants.SAVE_ADD_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, exists: false }\r\n };\r\n case DistributorConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: action.distributor\r\n };\r\n case DistributorConstants.SAVE_EDIT_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: { ...state.selected, exists: false }\r\n };\r\n case DistributorConstants.SET_INVALIDS_PRODUCTS:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n productsDistributor: setInvalids(state.selected.productsDistributor, action.invalids)\r\n }\r\n };\r\n case DistributorConstants.RESET_INVALIDS_PRODUCTS:\r\n return {\r\n ...state,\r\n selected: {\r\n ...state.selected,\r\n productsDistributor: resetInvalids(state.selected.productsDistributor)\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default DistributorAdminReducer;\r\n","import DistributorClientConstants from \"./DistributorClientConstants\";\r\nimport DistributorClientModel from \"./DistributorClientModel\";\r\n\r\nconst initialState = {\r\n selected: DistributorClientModel.getEmpty()\r\n};\r\n\r\nconst DistributorClientReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case DistributorClientConstants.GET_ACTION_TYPE:\r\n return {\r\n ...state,\r\n selected: action.distributor\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default DistributorClientReducer;\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './app/App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport './index.css';\r\nimport { Provider } from 'react-redux';\r\nimport { createStore, combineReducers, compose, applyMiddleware } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport CategoryReducer from './admin/categories/CategoryReducer';\r\nimport FeatureReducer from './admin/features/FeatureReducer';\r\nimport OptionReducer from './admin/options/OptionReducer';\r\nimport HelperReducer from './client/helper/HelperReducer';\r\nimport WizardReducer from './client/wizard/WizardReducer';\r\nimport StartOverReducer from './client/startover/StartOverReducer';\r\nimport QuestionAdminReducer from './admin/questions/QuestionAdminReducer';\r\nimport ProductAdminReducer from './admin/products/ProductAdminReducer';\r\nimport LayoutAdminReducer from './admin/layout/LayoutAdminReducer';\r\nimport ResultReducer from './client/result/ResultReducer';\r\nimport PreviewReducer from './admin/preview/PreviewReducer';\r\nimport LoginReducer from './admin/login/LoginReducer';\r\nimport HomeReducer from './client/home/HomeReducer';\r\nimport UploadImageReducer from './admin/uploadImage/UploadImageReducer';\r\nimport { createBrowserHistory } from 'history';\r\nimport DistributorAdminReducer from './admin/distributors/DistributorAdminReducer';\r\nimport DistributorClientReducer from './client/distributor/DistributorClientReducer';\r\n\r\nconst rootReducer = combineReducers({ \r\n category: CategoryReducer,\r\n feature: FeatureReducer,\r\n option: OptionReducer,\r\n helper: HelperReducer,\r\n wizard: WizardReducer,\r\n startover: StartOverReducer,\r\n question: QuestionAdminReducer,\r\n product: ProductAdminReducer,\r\n layout: LayoutAdminReducer,\r\n result: ResultReducer,\r\n preview: PreviewReducer,\r\n login: LoginReducer,\r\n home: HomeReducer,\r\n uploadImage: UploadImageReducer,\r\n distributor: DistributorAdminReducer,\r\n distributorClient: DistributorClientReducer\r\n});\r\n\r\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\nconst store = window.location.href.indexOf('localhost') !== -1 ?\r\n createStore(rootReducer, composeEnhancers(applyMiddleware(thunk)))\r\n : createStore(rootReducer, applyMiddleware(thunk));\r\n\r\nconst rootElement = document.getElementById('root');\r\n\r\nexport const history = createBrowserHistory({\r\n basename: process.env.PUBLIC_URL\r\n});\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAAAXNSR0IArs4c6QAABEJJREFUSA29Vl9s01UUvue2RUZSQxk+sCXGhP3pmD6YqESJxBezGMSpAzQ86QPZW9uZaNqqoYmsrQlxf1554IUQeECzIBE0RsXAgoaQYIYl5YGQbL4Mm4gytrW/4/lud8v117quYrhJe/+d832/e++59zuk1lDe25Z72it7g56inWLeqRR3VN1oTupZrfi8Duqpz66lrjSDo9UMEt3ZNz1So4o5uppdbY6ooFl9OF5Mf14b8zUaEiaiuSe4wsdZ8fNVe6ooUhfl96X21A0dDGBlyitXOjytuhSrV+X3gqw8gHFSNE0B2j9eSN1E3y11hPHu/E5FlVPMajORKiumIxRs+2T815HfXEd/O9E3toXLCx8r4gPiGxTfeeEfmigmz7u2/yBcIftGHNbJV97QIf362LXkjOvQrB3rG32SyvSF7E6XkC4J6csuaY3QbKPn/YyVKaIfNzxCg/lfUqVmBI3mk0/lIncXeUrO/kWslLR+1m6vtg7mzLCNsrIHIQMePhQYwMICgG15DGE8mhtCgODMsI3/dWUW1JICC5jABgfGDSF7fMgYS4C0embGb+Xvg95Pw27fYAkmxiyHxqWu3jOqIBpdh1baie7cO4tcno/1ZCddvyqmXCu5y+DSeEFgQMQXmoW+C+S2R6L53UzeEUS3rOVPd85g4g5LAZfcY/NcyXWjM67hWtuJ3uwOr+KdFLKgfPXZ/vDmg3W+8mBgDFw4Q3kb5TDlBUHtL5mXvgv6x2x/ZFu+32N1WoKijYgurVsf2jN8eXjZztvawe4UwupDbJ8ra4Q61jt6qDQ3/XusZ/RtdxzteH/+cXnazsnZRGRlhQ1a7Tp89f2//Hbo38fmDhOljYzMGFMbM4dlv4/Fe3N7rV0qmm3nZe+cbGOnhP0shfRArpC+bedXq2W7IDHcg4fYb7gp1JUqLRf7hPQVWclxUY/Kxkfbz5bu3D5jIpuoJLI0MDaTvOX3dfv3sWkOK5zFpHn1XStpZ2b2LW3dGn5DPuprBIVI1YnSnfkf5AO2yyuyoEntXsu9dbBnNcQTPMS8y8dnurGvYoubOrcMSlB8K6sKCfEzYl3RAf3W+PX0hUY+dWOQLylGqKHU6DDTDkgM2v6S+f7de5Fw+2tYqZzZkngeGCskT/vtGvUNptFKBI+e0iYtkCgTyoDRs0ZeMpa5PHx3spgeiETCj01eTx/9F7O64SqmCLNwgMtEKWn6yFiKeOJu1Xk5A5lLsT+c7qpNgyWYMELqgbqmh/Hu7EWjGCIpbevpuQdVDGjiwj3+STC7JMCmJ4ppSUFwjisFOYiczzwMIJ5wsHOt1laADRkEWLAtRo3QKLLkICYoRKnxdc2214K4NVIM+EoUQu2RYgxZtYddbUut00NNoixpozQR8gVFaZQm4g7jWiHSq6toIU20pKhN6oFsoIVEGBE/UUidcnHcdt2WupO2/X+m+n8DR7YTI+npdjEAAAAASUVORK5CYII=\"","module.exports = \"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAMAAACtqHJCAAADAFBMVEX////+/v79/f38/Pz7+/v6+vr5+fn4+Pj39/f29vb19fX09PTz8/Py8vLx8fHw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fm5ubl5eXk5OTj4+Pi4uLh4eHg4ODf39/e3t7d3d3c3Nzb29va2trZ2dnY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzLy8vKysrJycnIyMjHx8fGxsbFxcXExMTDw8PCwsLBwcHAwMC/v7++vr69vb28vLy7u7u6urq5ubm4uLi3t7e2tra1tbW0tLSzs7OysrKxsbGwsLCvr6+urq6tra2srKyrq6uqqqqpqamoqKinp6empqalpaWkpKSjo6OioqKhoaGgoKCfn5+enp6dnZ2cnJybm5uampqZmZmYmJiXl5eWlpaVlZWUlJSTk5OSkpKRkZGQkJCPj4+Ojo6NjY2MjIyLi4uKioqJiYmIiIiHh4eGhoaFhYWEhISDg4OCgoKBgYGAgIB/f39+fn59fX18fHx7e3t6enp5eXl4eHh3d3d2dnZ1dXV0dHRzc3NycnJxcXFwcHBvb29ubm5tbW1sbGxra2tqamppaWloaGhnZ2dmZmZlZWVkZGRjY2NiYmJhYWFgYGBfX19eXl5dXV1cXFxbW1taWlpZWVlYWFhXV1dWVlZVVVVUVFRTU1NSUlJRUVFQUFBPT09OTk5NTU1MTExLS0tKSkpJSUlISEhHR0dGRkZFRUVERERDQ0NCQkJBQUFAQEA/Pz8+Pj49PT08PDw7Ozs6Ojo5OTk4ODg3Nzc2NjY1NTU0NDQzMzMyMjIxMTEwMDAvLy8uLi4tLS0sLCwrKysqKiopKSkoKCgnJycmJiYlJSUkJCQjIyMiIiIhISEgICAfHx8eHh4dHR0cHBwbGxsaGhoZGRkYGBgXFxcWFhYVFRUUFBQTExMSEhIREREQEBAPDw8ODg4NDQ0MDAwLCwsKCgoJCQkICAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAADuruGUAAABAHRSTlP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fvXoqAAAIABJREFUeJzt3X2ATdX+x/FmPBV6IERxubqoKBJFKcWlyEMpUpTiEkVcokSUUpTiRypRekaS4tITkSJKkSJEipQiSpQYM797roc5Z/b+zl777L3W2nO8X/+er32+c77rY2bWnLP2UUcBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKZtXnZW88/3LfDZTVPKWi7FyByPs/KtmP1gqljB3dtdUGl4223BUTDlixXezZ+MmvisN7tGlUvnd92i4A16RnuAYmTuXXlvMmjB3RuWadiEdvtAmaV8MxHgt0bFs8YP7Rn2wZVS6bbbh3Qr6q/gMTJ2LLi3ZdG3tnx8trlj7b9VQCaXJJ0QOLt/Hrh9CeH3Nq6/mnF02x/RUCI2oYSkDh72TZGCrkt7IDEY9sYed1QnQGJw7Yx8qTxhgISh21j5B1vmA9IPLaNEW2L7QYkDtvGiKBvbOfCFdvGiIjdtrPghW1jWFTE9vr3hW1jGFbR9ppPFtvGMKGO7YUeggPbxgNj28ZFbb+eSDEtbK/ukMW2jSfEto2rsW2MEHS2vaL1ydiyYk5s27gZ28ZI2gDby9iMneti28bd2TaGT6NtL13j/rdtPCK2bVyWbWN4mWx7vVq1Y/WCV2PbxvXYNoa792yv0ajYs3FpbNu4PdvGiLfS9sKMoMxtbBvjoK22V2PEsW18ZMufaXsF5h0ZWxbaHhdMKy0uhwsvvf72h55789Pv/zK4BiPua9vjgmnVpbXwV3ZNsSoXXn3LPU9M+3DtryZXYwR9aG9QsKORtBY2uZYXKler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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMCAYAAACJOyb4AAAAAXNSR0IArs4c6QAAACxJREFUOBFjnDlzZv2/f/8aGKgMNDQ0WKls5KhxAx0CjKOpZaCjgLr20zRCAWIiEse8cfEyAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAASCAYAAABit09LAAAAAXNSR0IArs4c6QAAALZJREFUKBVjZMADGrSn8rz7/aGfiYlxHhMudSBF739/2M7IwJDw/y8TK1aFMEVAQywYGRkjJ96uOATUgArQFU24WbUGpAJFIS5FKArxKYIrJKQIrJAYRSCFTO9/fVwHpMG+gzkcJIEOsAYPuiIQn0mQjT8ISJ/4////8gL1thBsikBi4OAhxp3wcCSkGK4QZDw+xSgK8SnGUIhLMVaF6IqB6dEFZzg2XM3+Isgq4PmfgWEBEP8CACpWfeHHOmP0AAAAAElFTkSuQmCC\""],"sourceRoot":""}