From 4f5b38e17819d0076107f4952418eb15b34eb290 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 9 Aug 2017 15:54:44 +0530 Subject: [PATCH 01/19] =?UTF-8?q?Github=20issue#1102,=20Process/add=20ref?= =?UTF-8?q?=20code=20from=20deep=20link=20=E2=80=94=20Done=20Github=20issu?= =?UTF-8?q?e#1037,=20Project=20spec=20information=20is=20not=20saved=20whe?= =?UTF-8?q?n=20changing=20project=20types=20=E2=80=94=20Done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../create/components/ProjectWizard.jsx | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/projects/create/components/ProjectWizard.jsx b/src/projects/create/components/ProjectWizard.jsx index 7f08533e4..3113d9c68 100644 --- a/src/projects/create/components/ProjectWizard.jsx +++ b/src/projects/create/components/ProjectWizard.jsx @@ -36,10 +36,11 @@ class ProjectWizard extends Component { this.removeIncompleteProject = this.removeIncompleteProject.bind(this) this.handleOnCreateProject = this.handleOnCreateProject.bind(this) this.handleStepChange = this.handleStepChange.bind(this) + this.restoreCommonDetails = this.restoreCommonDetails.bind(this) } componentDidMount() { - const { params, onStepChange } = this.props + const { params, onStepChange, location } = this.props // load incomplete project from local storage const incompleteProjectStr = window.localStorage.getItem(LS_INCOMPLETE_PROJECT) if(incompleteProjectStr) { @@ -64,6 +65,16 @@ class ProjectWizard extends Component { wizardStep = WZ_STEP_FILL_PROJ_DETAILS } } + // retrieve refcode from query param + const refcode = _.get(location, 'query.refcode') + if (refcode) { + // if refcode exists, update the updateQuery to set that refcode + if (_.get(updateQuery, 'details')) { + updateQuery['details']['utm'] = { $set : { code : refcode }} + } else { + updateQuery['details'] = { utm : { $set : { code : refcode }}} + } + } this.setState({ project: update(this.state.project, updateQuery), dirtyProject: update(this.state.dirtyProject, updateQuery), @@ -138,11 +149,12 @@ class ProjectWizard extends Component { updateProducts(projectType, product) { window.scrollTo(0, 0) const { onStepChange } = this.props - const products = _.get(this.state.project, 'details.products') - let updateQuery = { details: { products : { $set : [product] }}} - if (!products) { - updateQuery = { details: { $set : { products : [product] }}} - } + // const products = _.get(this.state.project, 'details.products') + let updateQuery = { } + const detailsQuery = { products : [product] } + // restore common fields from dirty project + this.restoreCommonDetails(updateQuery, detailsQuery) + updateQuery.details = { $set : detailsQuery} if (projectType) { updateQuery.type = {$set : projectType } } @@ -155,6 +167,29 @@ class ProjectWizard extends Component { }) } + /** + * Restores common details of the project while changing product type. + * + * Added for Github issue#1037 + */ + restoreCommonDetails(updateQuery, detailsQuery) { + const name = _.get(this.state.dirtyProject, 'name') + // if name was already entered, restore it + if (name) { + updateQuery.name = { $set: name } + } + const description = _.get(this.state.dirtyProject, 'description') + // if description was already entered, restore it + if (description) { + updateQuery.description = { $set: description } + } + const utm = _.get(this.state.dirtyProject, 'details.utm') + // if UTM code was already entered, restore it + if (utm) { + detailsQuery.utm = { code : utm.code } + } + } + handleProjectChange(change) { const { onProjectUpdate } = this.props this.setState({ From 6eaa4795a2767df6bf9d3a22c5835a7cb02e387a Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 9 Aug 2017 16:02:39 +0530 Subject: [PATCH 02/19] Fixed lint error --- src/projects/create/components/ProjectWizard.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/projects/create/components/ProjectWizard.jsx b/src/projects/create/components/ProjectWizard.jsx index 3113d9c68..9cd6db2ba 100644 --- a/src/projects/create/components/ProjectWizard.jsx +++ b/src/projects/create/components/ProjectWizard.jsx @@ -150,7 +150,7 @@ class ProjectWizard extends Component { window.scrollTo(0, 0) const { onStepChange } = this.props // const products = _.get(this.state.project, 'details.products') - let updateQuery = { } + const updateQuery = { } const detailsQuery = { products : [product] } // restore common fields from dirty project this.restoreCommonDetails(updateQuery, detailsQuery) From d57aa62ed4bffcf4b2c521f2012ef0a2029d9eb9 Mon Sep 17 00:00:00 2001 From: Dimitrina Sirakova Date: Thu, 10 Aug 2017 00:38:00 +0300 Subject: [PATCH 03/19] FIx box shadow around the box in the specification page --- src/projects/detail/containers/Specification.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/projects/detail/containers/Specification.scss b/src/projects/detail/containers/Specification.scss index 479c254fc..f5c1ac7fc 100644 --- a/src/projects/detail/containers/Specification.scss +++ b/src/projects/detail/containers/Specification.scss @@ -188,6 +188,10 @@ $title-color: $tc-gray-80; border-radius: 4px; position: relative; + form > div { + box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2); + } + .title { color: $tc-gray-80; @include roboto-bold; From 2b52855024b9990d9672f4e40ccdc08bfead0890 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 10 Aug 2017 09:05:31 +0530 Subject: [PATCH 04/19] =?UTF-8?q?Github=20issue#1035,=20URL=20does=20not?= =?UTF-8?q?=20change=20when=20selecting=20project=20from=20"New=20Project"?= =?UTF-8?q?=20page=20=E2=80=94=20Implemented=20required=20behaviour=20on?= =?UTF-8?q?=20ad=20hoc=20basis=20instead=20of=20enabling=20the=20Wizard=20?= =?UTF-8?q?or=20ProjectWizard=20component=20for=20being=20URL=20aware.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../create/components/ProjectWizard.jsx | 6 ++-- .../create/containers/CreateContainer.jsx | 36 ++++++++++++++----- src/routes.jsx | 14 ++++++-- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/projects/create/components/ProjectWizard.jsx b/src/projects/create/components/ProjectWizard.jsx index 9cd6db2ba..671ef3aba 100644 --- a/src/projects/create/components/ProjectWizard.jsx +++ b/src/projects/create/components/ProjectWizard.jsx @@ -105,7 +105,7 @@ class ProjectWizard extends Component { * It also moves the wizard to the project details step if there exists an incomplete project. */ loadIncompleteProject() { - const { onStepChange } = this.props + const { onStepChange, onProjectUpdate } = this.props const incompleteProjectStr = window.localStorage.getItem(LS_INCOMPLETE_PROJECT) if(incompleteProjectStr) { const incompleteProject = JSON.parse(incompleteProjectStr) @@ -114,6 +114,7 @@ class ProjectWizard extends Component { dirtyProject: update(this.state.dirtyProject, { $merge : incompleteProject }), wizardStep: WZ_STEP_FILL_PROJ_DETAILS }, () => { + typeof onProjectUpdate === 'function' && onProjectUpdate(this.state.dirtyProject, false) typeof onStepChange === 'function' && onStepChange(this.state.wizardStep) }) } @@ -148,7 +149,7 @@ class ProjectWizard extends Component { updateProducts(projectType, product) { window.scrollTo(0, 0) - const { onStepChange } = this.props + const { onStepChange, onProjectUpdate } = this.props // const products = _.get(this.state.project, 'details.products') const updateQuery = { } const detailsQuery = { products : [product] } @@ -163,6 +164,7 @@ class ProjectWizard extends Component { dirtyProject: update(this.state.project, updateQuery), wizardStep: WZ_STEP_FILL_PROJ_DETAILS }, () => { + typeof onProjectUpdate === 'function' && onProjectUpdate(this.state.dirtyProject, false) typeof onStepChange === 'function' && onStepChange(this.state.wizardStep) }) } diff --git a/src/projects/create/containers/CreateContainer.jsx b/src/projects/create/containers/CreateContainer.jsx index 13e4663bf..a042d5cbd 100644 --- a/src/projects/create/containers/CreateContainer.jsx +++ b/src/projects/create/containers/CreateContainer.jsx @@ -1,6 +1,6 @@ import _ from 'lodash' import React, { PropTypes } from 'react' -import { withRouter } from 'react-router' +import { withRouter, browserHistory } from 'react-router' import { connect } from 'react-redux' import { renderComponent, branch, compose, withProps } from 'recompose' import { createProjectWithStatus as createProjectAction, fireProjectDirty, fireProjectDirtyUndo } from '../../actions/project' @@ -139,13 +139,33 @@ class CreateConainer extends React.Component { {...this.props} createProject={ this.createProject } processing={ this.state.creatingProject } - onStepChange={ (wizardStep) => this.setState({ - wizardStep - })} - onProjectUpdate={ (updatedProject) => this.setState({ - isProjectDirty: true, - updatedProject - })} + onStepChange={ (wizardStep) => { + if (wizardStep === ProjectWizard.Steps.WZ_STEP_INCOMP_PROJ_CONF) { + browserHistory.push('/new-project/incomplete') + } + if (wizardStep === ProjectWizard.Steps.WZ_STEP_SELECT_PROD_TYPE) { + browserHistory.push('/new-project/') + } + this.setState({ + wizardStep + }) + } + } + onProjectUpdate={ (updatedProject, dirty=true) => { + const prevProduct = _.get(this.state.updatedProject, 'details.products[0]', null) + const product = _.get(updatedProject, 'details.products[0]', null) + // compares updated product with previous product to know if user has updated the product + if (prevProduct !== product) { + if (product) { + browserHistory.push('/new-project/' + product) + } + } + this.setState({ + isProjectDirty: dirty, + updatedProject + }) + } + } /> ) } diff --git a/src/routes.jsx b/src/routes.jsx index a3fdf65ae..756340b31 100644 --- a/src/routes.jsx +++ b/src/routes.jsx @@ -30,6 +30,12 @@ browserHistory.listen(location => { window.analytics.page('Project Specification') } else if (/^\/$/.test(location.pathname)) { window.analytics.page('Connect Home') + } else if (/^new-project\/$/.test(location.pathname)) { + window.analytics.page('New Project : Select Product') + } else if (/^new-project\/incomplete$/.test(location.pathname)) { + window.analytics.page('New Project : Incomplete Project') + } else if (/^new-project\/[a-zA-Z0-9\_]+$/.test(location.pathname)) { + window.analytics.page('New Project : Project Details') } } }) @@ -81,9 +87,13 @@ const validateCreateProjectParams = (nextState, replace, callback) => { const product = nextState.params.product const productCategory = findProductCategory(product) if (product && product.trim().length > 0 && !productCategory) { - replace('/404') + // workaround to add URL for incomplete project confirmation step + // ideally we should have better URL naming which resolves each route with distinct patterns + if (product !== 'incomplete') { + replace('/404') + } } - callback() + callback() } const renderTopBarWithProjectsToolBar = () => From da616a5a4da81a66c0ad9d6fcdebf3b442981cb0 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 10 Aug 2017 09:25:43 +0530 Subject: [PATCH 05/19] =?UTF-8?q?Github=20issue#1102,=20Process/add=20ref?= =?UTF-8?q?=20code=20from=20deep=20link=20=E2=80=94=20Truncated=20the=20re?= =?UTF-8?q?f=20code=20to=207=20characters=20only=20=E2=80=94=20ref=20code?= =?UTF-8?q?=20=3D>=20refCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/projects/create/components/ProjectWizard.jsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/projects/create/components/ProjectWizard.jsx b/src/projects/create/components/ProjectWizard.jsx index 9cd6db2ba..9f1c885f2 100644 --- a/src/projects/create/components/ProjectWizard.jsx +++ b/src/projects/create/components/ProjectWizard.jsx @@ -8,7 +8,7 @@ import SelectProduct from './SelectProduct' import IncompleteProjectConfirmation from './IncompleteProjectConfirmation' import FillProjectDetails from './FillProjectDetails' import update from 'react-addons-update' -import { LS_INCOMPLETE_PROJECT } from '../../../config/constants' +import { LS_INCOMPLETE_PROJECT, PROJECT_REF_CODE_MAX_LENGTH } from '../../../config/constants' import './ProjectWizard.scss' const WZ_STEP_INCOMP_PROJ_CONF = 0 @@ -65,14 +65,15 @@ class ProjectWizard extends Component { wizardStep = WZ_STEP_FILL_PROJ_DETAILS } } - // retrieve refcode from query param - const refcode = _.get(location, 'query.refcode') - if (refcode) { - // if refcode exists, update the updateQuery to set that refcode + // retrieve refCode from query param + // TODO give warning after truncating + const refCode = _.get(location, 'query.refCode', '').trim().substr(0, PROJECT_REF_CODE_MAX_LENGTH) + if (refCode.trim().length > 0) { + // if refCode exists, update the updateQuery to set that refCode if (_.get(updateQuery, 'details')) { - updateQuery['details']['utm'] = { $set : { code : refcode }} + updateQuery['details']['utm'] = { $set : { code : refCode }} } else { - updateQuery['details'] = { utm : { $set : { code : refcode }}} + updateQuery['details'] = { utm : { $set : { code : refCode }}} } } this.setState({ From 3320e02aee3a732a3299a2d395da0361680f6cf0 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 10 Aug 2017 17:18:07 +0530 Subject: [PATCH 06/19] =?UTF-8?q?Github=20issue#1106,=20Add=20IBM=20chatbo?= =?UTF-8?q?t=20as=20a=20project=20type=20=E2=80=94=20Initial=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/product-chatbot.svg | 21 ++ .../projectQuestions/ibm_chatbot.v1.0.js | 269 ++++++++++++++++++ .../typeToSpecification.json | 1 + src/config/projectWizard/index.js | 6 + 4 files changed, 297 insertions(+) create mode 100644 src/assets/images/product-chatbot.svg create mode 100644 src/config/projectQuestions/ibm_chatbot.v1.0.js diff --git a/src/assets/images/product-chatbot.svg b/src/assets/images/product-chatbot.svg new file mode 100644 index 000000000..05b1ea7b0 --- /dev/null +++ b/src/assets/images/product-chatbot.svg @@ -0,0 +1,21 @@ + + + + icon-product-app + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/config/projectQuestions/ibm_chatbot.v1.0.js b/src/config/projectQuestions/ibm_chatbot.v1.0.js new file mode 100644 index 000000000..14e9c1e12 --- /dev/null +++ b/src/config/projectQuestions/ibm_chatbot.v1.0.js @@ -0,0 +1,269 @@ +import _ from 'lodash' +import { Icons } from 'appirio-tech-react-components' +import { findProduct} from '../projectWizard' + +const isFileRequired = (project, subSections) => { + const subSection = _.find(subSections, (s) => s.type === 'questions') + const fields = _.filter(subSection.questions, q => q.type.indexOf('see-attached') > -1) + // iterate over all seeAttached type fields to check + // if any see attached is checked. + return _.some(_.map( + _.map(fields, 'fieldName'), + fn => _.get(project, `${fn}.seeAttached`) + )) +} + +const sections = [ + { + id: 'appDefinition', + title: (project, showProduct) => { + const product = _.get(project, 'details.products[0]') + if (showProduct && product) { + const prd = findProduct(product) + if (prd) return prd + } + return 'Definition' + }, + required: true, + description: 'Please answer a few basic questions about your project. You can also provide the needed information in a supporting document--add a link in the notes section or upload it below.', + subSections: [ + { + id: 'projectName', + required: true, + validationError: 'Please provide a name to your project', + fieldName: 'name', + description: '', + title: 'Project Name', + type: 'project-name' + }, + { + id: 'questions', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + icon: 'question', + title: 'Are you an existing Watson Assistant customer?', + description: '', + fieldName: 'details.appDefinition.existingWatsonCustomer', + type: 'checkbox', + options: [ + {value: 'true', title: 'Yes'}, + {value: 'false', title: 'No'}, + ] + }, + { + id: 'projectInfo', + required: true, + fieldName: 'description', + description: 'Brief Description', + title: 'Description', + type: 'textbox' + }, + { + icon: 'question', + title: 'Do you have an existing IBM Bluemix account?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.hasBluemixAccount', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + title: 'What capabilities does the chatbot need to support? (check all that apply)', + description: '', + type: 'checkbox-group', + fieldName: 'details.appDefinition.capabilities', + options: [ + {value: 'order_management', label: 'Order Management'}, + {value: 'information', label: 'Information'}, + {value: 'help', label: 'Help'}, + {value: 'complaints', label: 'Complaints'}, + {value: 'billing', label: 'Billing'}, + {value: 'account_management', label: 'Account Management'}, + {value: 'custom', label: 'Custom'} + ], + }, + { + icon: 'question', + title: 'Will the chatbot need to provide data from any systems to support the capabilities you listed above?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.integrationSystems', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + title: 'Do you have existing agent scripts?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.existingAgentScripts', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + title: 'Are you planning to transfer conversations to human agents?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.transferToHumanAgents', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + } + ] + }, + { + id: 'notes', + fieldName: 'details.appDefinition.notes', + title: 'Notes', + description: 'Add any other important information regarding your project (e.g., links to documents or existing applications, budget or timing constraints)', + type: 'notes' + }, + { + id: 'files', + required: isFileRequired, + title: (project) => `Project Files (${_.get(project, 'attachments', []).length})` || 'Files', + description: '', + type: 'files', + fieldName: 'attachments' + } + ] + } +] + +export default sections + +export const basicSections = [ + { + id: 'appDefinition', + title: '', + required: true, + description: 'Please answer a few basic questions about your project and, as an option, add links to supporting documents in the “Notes” section. If you have any files to upload, you’ll be able to do so later.', + subSections: [ + { + id: 'projectName', + required: true, + validationError: 'Please provide a name to your project', + fieldName: 'name', + description: '', + title: 'Project Name', + type: 'project-name' + }, + { + id: 'questions', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + id: 'projectInfo', + required: true, + fieldName: 'description', + description: 'Brief Description', + title: 'Description', + type: 'textbox' + }, + { + icon: 'question', + required: true, + title: 'Are you an existing Watson Assistant customer?', + description: '', + fieldName: 'details.appDefinition.existingWatsonCustomer', + type: 'radio-group', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'}, + ] + }, + { + icon: 'question', + required: true, + title: 'Do you have an existing IBM Bluemix account?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.hasBluemixAccount', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + // required: true, + title: 'What capabilities does the chatbot need to support?', + description: '', + type: 'checkbox-group', + fieldName: 'details.appDefinition.capabilities', + options: [ + {value: 'order_management', label: 'Order Management'}, + {value: 'information', label: 'Information'}, + {value: 'help', label: 'Help'}, + {value: 'complaints', label: 'Complaints'}, + {value: 'billing', label: 'Billing'}, + {value: 'account_management', label: 'Account Management'}, + {value: 'custom', label: 'Custom'} + ], + }, + { + icon: 'question', + required: true, + title: 'Will the chatbot need to provide data from any systems to support the capabilities you listed above?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.integrationSystems', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + required: true, + title: 'Do you have existing agent scripts?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.existingAgentScripts', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + required: true, + title: 'Are you planning to transfer conversations to human agents?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.transferToHumanAgents', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + } + ] + }, + { + id: 'notes', + fieldName: 'details.appDefinition.notes', + title: 'Notes', + description: 'Add any other important information regarding your project (e.g., links to documents or existing applications, budget or timing constraints)', + type: 'notes' + } + ] + } +] \ No newline at end of file diff --git a/src/config/projectSpecification/typeToSpecification.json b/src/config/projectSpecification/typeToSpecification.json index 1269df54f..385ea90dc 100644 --- a/src/config/projectSpecification/typeToSpecification.json +++ b/src/config/projectSpecification/typeToSpecification.json @@ -7,5 +7,6 @@ "visual_prototype": "app_dev.v1.0", "website_development": "app_dev.v1.0", "application_development": "app_dev.v1.0", + "ibm_chatbot": "ibm_chatbot.v1.0", "generic_dev": "app_dev.v1.0" } diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 8e1341b27..26eae56ce 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -63,6 +63,12 @@ const products = { icon: 'product-app', id: 'application_development' }, + ChatBot: { + brief: 'ChatBot', + details: 'Build ChatBot using IBM Watson', + icon: 'product-chatbot', + id: 'ibm_chatbot' + }, 'Software Development': { brief: 'Tasks or adhoc', details: 'Get help with any part of your development cycle', From 1c023af759489e1b347fa3be4e0bcadaf55d9125 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 10 Aug 2017 17:19:30 +0530 Subject: [PATCH 07/19] Temp deploy to dev --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 726aa82bf..989533340 100644 --- a/circle.yml +++ b/circle.yml @@ -19,7 +19,7 @@ compile: deployment: development: - branch: dev + branch: [dev, feature/chatbot-product-type] owner: appirio-tech commands: - ./deploy.sh DEV From 9dc19c9ee40ed81accf7de218e05571fbc6f50fa Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 10 Aug 2017 17:33:29 +0530 Subject: [PATCH 08/19] fixed lint error --- src/config/projectQuestions/ibm_chatbot.v1.0.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/projectQuestions/ibm_chatbot.v1.0.js b/src/config/projectQuestions/ibm_chatbot.v1.0.js index 14e9c1e12..01acc30d7 100644 --- a/src/config/projectQuestions/ibm_chatbot.v1.0.js +++ b/src/config/projectQuestions/ibm_chatbot.v1.0.js @@ -1,5 +1,5 @@ import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +// import { Icons } from 'appirio-tech-react-components' import { findProduct} from '../projectWizard' const isFileRequired = (project, subSections) => { From 24fd5a196216114ed2442eee6a3f65cc1a89f91e Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Fri, 11 Aug 2017 10:07:18 +0530 Subject: [PATCH 09/19] =?UTF-8?q?Github=20issue#1106,=20Add=20IBM=20chatbo?= =?UTF-8?q?t=20as=20a=20project=20type=20=E2=80=94=20copy=20changes=20?= =?UTF-8?q?=E2=80=94=20question=20type=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projectQuestions/ibm_chatbot.v1.0.js | 36 +++++++------------ src/config/projectWizard/index.js | 9 ++--- .../create/components/SelectProduct.js | 3 +- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/config/projectQuestions/ibm_chatbot.v1.0.js b/src/config/projectQuestions/ibm_chatbot.v1.0.js index 01acc30d7..3d917f1d4 100644 --- a/src/config/projectQuestions/ibm_chatbot.v1.0.js +++ b/src/config/projectQuestions/ibm_chatbot.v1.0.js @@ -210,50 +210,38 @@ export const basicSections = [ type: 'checkbox-group', fieldName: 'details.appDefinition.capabilities', options: [ - {value: 'order_management', label: 'Order Management'}, + {value: 'order_management', label: 'Order management'}, {value: 'information', label: 'Information'}, {value: 'help', label: 'Help'}, {value: 'complaints', label: 'Complaints'}, {value: 'billing', label: 'Billing'}, - {value: 'account_management', label: 'Account Management'}, - {value: 'custom', label: 'Custom'} + {value: 'account_management', label: 'Account management'}, + {value: 'custom', label: 'Custom (please explain in the Notes)'} ], }, { icon: 'question', required: true, - title: 'Will the chatbot need to provide data from any systems to support the capabilities you listed above?', + title: 'Will the chatbot need to access data from any systems to support the capabilities you listed above? If so, please list the systems below. (Change to text box)', description: '', - type: 'radio-group', - fieldName: 'details.appDefinition.integrationSystems', - options: [ - {value: 'true', label: 'Yes'}, - {value: 'false', label: 'No'} - ] + type: 'textbox', + fieldName: 'details.appDefinition.integrationSystems' }, { icon: 'question', required: true, - title: 'Do you have existing agent scripts?', + title: 'Do you have any example agent conversations you can provide? If so, please paste them or any links to documents below (you’ll be able to upload documents later).', description: '', - type: 'radio-group', - fieldName: 'details.appDefinition.existingAgentScripts', - options: [ - {value: 'true', label: 'Yes'}, - {value: 'false', label: 'No'} - ] + type: 'textbox', + fieldName: 'details.appDefinition.existingAgentScripts' }, { icon: 'question', required: true, - title: 'Are you planning to transfer conversations to human agents?', + title: 'Are you planning to transfer conversations to human agents? If so, please list the agents’ communication tools (e.g., Slack, LiveAgent, Intercom, etc.)', description: '', - type: 'radio-group', - fieldName: 'details.appDefinition.transferToHumanAgents', - options: [ - {value: 'true', label: 'Yes'}, - {value: 'false', label: 'No'} - ] + type: 'textbox', + fieldName: 'details.appDefinition.transferToHumanAgents' } ] }, diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 26eae56ce..44e42bf93 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -63,11 +63,12 @@ const products = { icon: 'product-app', id: 'application_development' }, - ChatBot: { - brief: 'ChatBot', - details: 'Build ChatBot using IBM Watson', + 'IBM Chatbot': { + brief: 'IBM Chatbot', + details: 'Build Chatbot using IBM Watson', icon: 'product-chatbot', - id: 'ibm_chatbot' + id: 'ibm_chatbot', + hidden: true }, 'Software Development': { brief: 'Tasks or adhoc', diff --git a/src/projects/create/components/SelectProduct.js b/src/projects/create/components/SelectProduct.js index e8bdd1c39..1d0af5a4c 100644 --- a/src/projects/create/components/SelectProduct.js +++ b/src/projects/create/components/SelectProduct.js @@ -15,7 +15,8 @@ function SelectProduct(props) { for(const subType in subTypes) { const item = subTypes[subType] // don't render disabled items for selection - if (item.disabled) continue + // don't render hidden items as well, hidden items can be reached via direct link though + if (item.disabled || item.hidden) continue const icon = cards.push( Date: Fri, 11 Aug 2017 07:46:00 -0400 Subject: [PATCH 10/19] small README fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5b3922f8a..a96082f2d 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Install dependencies by running the following in the root of the project: - **Note:** You must use npm 3. Type `npm -v` to ensure you have a 3.x version. ## NPM Commands -- To run locally, run `npm start` and head to `http://localhost:3000/search/challenges` +- To run locally, run `npm start` and head to `http://localhost:3000/new_project` - Run tests with `npm test` or use `npm run test:watch` to rerun tests after files change - To make sure your code passes linting: `npm run lint` - To create the build: `npm run build` From a19689fab0a444902c3c53d365ace767a5e69c8b Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Fri, 11 Aug 2017 18:04:09 +0530 Subject: [PATCH 11/19] =?UTF-8?q?Github=20issue#1102,=20Process/add=20ref?= =?UTF-8?q?=20code=20from=20deep=20link=20=E2=80=94=20Disabled=20the=20ref?= =?UTF-8?q?=20code=20box=20if=20it=20is=20loaded=20from=20query=20params?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/config/constants.js | 2 ++ src/projects/create/containers/CreateContainer.jsx | 9 +++++---- src/projects/detail/components/SpecSection.jsx | 3 +++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2b1aa08af..6c6579336 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "react": "^15.6.1", "react-addons-css-transition-group": "^15.6.0", "react-addons-pure-render-mixin": "^15.6.0", + "query-string": "^4.3.4", "react-color": "^2.13.1", "react-datetime": "2.7.1", "react-dom": "^15.6.1", diff --git a/src/config/constants.js b/src/config/constants.js index 48213103e..2257eda82 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -253,3 +253,5 @@ export const MAINTENANCE_MODE = false export const LS_INCOMPLETE_PROJECT = 'incompleteProject' export const CONNECT_MESSAGE_API_URL = process.env.CONNECT_MESSAGE_API_URL || TC_API_URL + +export const NEW_PROJECT_PATH = '/new-project' \ No newline at end of file diff --git a/src/projects/create/containers/CreateContainer.jsx b/src/projects/create/containers/CreateContainer.jsx index a042d5cbd..1cb3184a2 100644 --- a/src/projects/create/containers/CreateContainer.jsx +++ b/src/projects/create/containers/CreateContainer.jsx @@ -11,7 +11,8 @@ import { CREATE_PROJECT_FAILURE, LS_INCOMPLETE_PROJECT, PROJECT_STATUS_IN_REVIEW, - ACCOUNTS_APP_REGISTER_URL + ACCOUNTS_APP_REGISTER_URL, + NEW_PROJECT_PATH } from '../../../config/constants' const page404 = compose( @@ -141,10 +142,10 @@ class CreateConainer extends React.Component { processing={ this.state.creatingProject } onStepChange={ (wizardStep) => { if (wizardStep === ProjectWizard.Steps.WZ_STEP_INCOMP_PROJ_CONF) { - browserHistory.push('/new-project/incomplete') + browserHistory.push(NEW_PROJECT_PATH + '/incomplete') } if (wizardStep === ProjectWizard.Steps.WZ_STEP_SELECT_PROD_TYPE) { - browserHistory.push('/new-project/') + browserHistory.push(NEW_PROJECT_PATH +'' + window.location.search) } this.setState({ wizardStep @@ -157,7 +158,7 @@ class CreateConainer extends React.Component { // compares updated product with previous product to know if user has updated the product if (prevProduct !== product) { if (product) { - browserHistory.push('/new-project/' + product) + browserHistory.push(NEW_PROJECT_PATH + '/' + product + window.location.search) } } this.setState({ diff --git a/src/projects/detail/components/SpecSection.jsx b/src/projects/detail/components/SpecSection.jsx index 3ea0bf76f..3f2396a29 100644 --- a/src/projects/detail/components/SpecSection.jsx +++ b/src/projects/detail/components/SpecSection.jsx @@ -1,4 +1,5 @@ import React, { PropTypes } from 'react' +import qs from 'query-string' import { Tabs, Tab, TCFormFields } from 'appirio-tech-react-components' import _ from 'lodash' import SpecQuestions from './SpecQuestions' @@ -98,6 +99,7 @@ const SpecSection = props => { case 'project-name': { const refCodeFieldName = 'details.utm.code' const refCode = _.get(project, refCodeFieldName, undefined) + const queryParamRefCode = qs.parse(window.location.search).refCode return (
{ (!project.status || project.status === PROJECT_STATUS_DRAFT) && @@ -129,6 +131,7 @@ const SpecSection = props => { wrapperClass="project-refcode" maxLength={ PROJECT_REF_CODE_MAX_LENGTH } theme="paper-form-dotted" + disabled={ queryParamRefCode && queryParamRefCode.length > 0 } />
Optional From e0d5f02789fd2f4f19850e392dca8601ba69d7bb Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 14 Aug 2017 17:15:07 +0530 Subject: [PATCH 12/19] =?UTF-8?q?Github=20issue#1037,=20Project=20spec=20i?= =?UTF-8?q?nformation=20is=20not=20saved=20when=20changing=20project=20typ?= =?UTF-8?q?es=20=E2=80=94=20copying=20goal=20and=20users=20fields=20as=20w?= =?UTF-8?q?ell=20when=20user=20changes=20the=20product=20type.=20=E2=80=94?= =?UTF-8?q?=20it=20now=20validates,=20before=20copying,=20if=20the=20targe?= =?UTF-8?q?t=20product=20template=20contains=20the=20fields=20being=20copi?= =?UTF-8?q?ed.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/projectWizard/index.js | 32 +++++++++++++++++++ .../create/components/ProjectWizard.jsx | 32 +++++++++++++++++-- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 8e1341b27..d0256528b 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -1,3 +1,6 @@ +import _ from 'lodash' +import typeToSpecification from '../projectSpecification/typeToSpecification' + const products = { Design: { icon: 'product-app-visual-design', @@ -107,3 +110,32 @@ export function findProductCategory(product) { } } } + +/** + * Finds field from the project creation template + * + * @param {string} product id of the product. It should resolve to a template where search is to be made. + * @param {string} sectionId id of the section in the product template + * @param {string} subSectionId id of the sub section under the section identified by sectionId + * @param {string} fieldName name of the field to be fetched + * + * @return {object} field from the template, if found, null otherwise + */ +export function getProjectCreationTemplateField(product, sectionId, subSectionId, fieldName) { + let specification = 'topcoder.v1' + if (product) + specification = typeToSpecification[product] + let sections = require(`../projectQuestions/${specification}`).basicSections + const section = _.find(sections, {id: sectionId}) + let subSection = null + if (subSectionId && section) { + subSection = _.find(section.subSections, {id : subSectionId }) + } + if (subSection) { + if (subSectionId === 'questions') { + return _.find(subSection.questions, { fieldName }) + } + return subSection.fieldName === fieldName ? subSection : null + } + return null + } \ No newline at end of file diff --git a/src/projects/create/components/ProjectWizard.jsx b/src/projects/create/components/ProjectWizard.jsx index e56cf4700..e8f3fdc90 100644 --- a/src/projects/create/components/ProjectWizard.jsx +++ b/src/projects/create/components/ProjectWizard.jsx @@ -2,7 +2,7 @@ import _ from 'lodash' import { unflatten } from 'flat' import React, { Component, PropTypes } from 'react' -import config, { findProductCategory } from '../../../config/projectWizard' +import config, { findProductCategory, getProjectCreationTemplateField } from '../../../config/projectWizard' import Wizard from '../../../components/Wizard' import SelectProduct from './SelectProduct' import IncompleteProjectConfirmation from './IncompleteProjectConfirmation' @@ -155,7 +155,7 @@ class ProjectWizard extends Component { const updateQuery = { } const detailsQuery = { products : [product] } // restore common fields from dirty project - this.restoreCommonDetails(updateQuery, detailsQuery) + this.restoreCommonDetails(product, updateQuery, detailsQuery) updateQuery.details = { $set : detailsQuery} if (projectType) { updateQuery.type = {$set : projectType } @@ -175,7 +175,7 @@ class ProjectWizard extends Component { * * Added for Github issue#1037 */ - restoreCommonDetails(updateQuery, detailsQuery) { + restoreCommonDetails(updatedProduct, updateQuery, detailsQuery) { const name = _.get(this.state.dirtyProject, 'name') // if name was already entered, restore it if (name) { @@ -191,6 +191,32 @@ class ProjectWizard extends Component { if (utm) { detailsQuery.utm = { code : utm.code } } + const appDefinitionQuery = {} + const goal = _.get(this.state.dirtyProject, 'details.appDefinition.goal') + // finds the goal field from the updated product template + const goalField = getProjectCreationTemplateField( + updatedProduct, + 'appDefinition', + 'questions', + 'details.appDefinition.goal.value' + ) + // if goal was already entered and updated product template has the field, restore it + if (goalField && goal) { + appDefinitionQuery.goal = goal + } + const users = _.get(this.state.dirtyProject, 'details.appDefinition.users') + // finds the users field from the target product template + const usersField = getProjectCreationTemplateField( + updatedProduct, + 'appDefinition', + 'questions', + 'details.appDefinition.users.value' + ) + // if users was already entered and updated product template has the field, restore it + if (usersField && users) { + appDefinitionQuery.users = users + } + detailsQuery.appDefinition = appDefinitionQuery } handleProjectChange(change) { From 2d42d357c4205b8eb304e9c59c07c60a5e663ee3 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 14 Aug 2017 17:43:21 +0530 Subject: [PATCH 13/19] Fixed lint error --- src/config/projectWizard/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index d0256528b..4570ff18d 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -125,7 +125,7 @@ export function getProjectCreationTemplateField(product, sectionId, subSectionId let specification = 'topcoder.v1' if (product) specification = typeToSpecification[product] - let sections = require(`../projectQuestions/${specification}`).basicSections + const sections = require(`../projectQuestions/${specification}`).basicSections const section = _.find(sections, {id: sectionId}) let subSection = null if (subSectionId && section) { From e4e5e92a31c9170959854971dfd01689255cbcaf Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 14 Aug 2017 19:57:48 +0530 Subject: [PATCH 14/19] =?UTF-8?q?Github=20issue#1037,=20Project=20spec=20i?= =?UTF-8?q?nformation=20is=20not=20saved=20when=20changing=20project=20typ?= =?UTF-8?q?es=20=E2=80=94=20Added=20notes=20to=20restored=20fields=20list?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/projects/create/components/ProjectWizard.jsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/projects/create/components/ProjectWizard.jsx b/src/projects/create/components/ProjectWizard.jsx index e8f3fdc90..b1b4c7709 100644 --- a/src/projects/create/components/ProjectWizard.jsx +++ b/src/projects/create/components/ProjectWizard.jsx @@ -216,6 +216,18 @@ class ProjectWizard extends Component { if (usersField && users) { appDefinitionQuery.users = users } + const notes = _.get(this.state.dirtyProject, 'details.appDefinition.notes') + // finds the notes field from the target product template + const notesField = getProjectCreationTemplateField( + updatedProduct, + 'appDefinition', + 'notes', + 'details.appDefinition.notes' + ) + // if notes was already entered and updated product template has the field, restore it + if (notesField && notes) { + appDefinitionQuery.notes = notes + } detailsQuery.appDefinition = appDefinitionQuery } From 82f38d643ff9e13a0006d83847b07fb03927f263 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 14 Aug 2017 22:17:21 +0530 Subject: [PATCH 15/19] IBM => Watson --- src/config/projectSpecification/typeToSpecification.json | 2 +- src/config/projectWizard/index.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/config/projectSpecification/typeToSpecification.json b/src/config/projectSpecification/typeToSpecification.json index 385ea90dc..832520070 100644 --- a/src/config/projectSpecification/typeToSpecification.json +++ b/src/config/projectSpecification/typeToSpecification.json @@ -7,6 +7,6 @@ "visual_prototype": "app_dev.v1.0", "website_development": "app_dev.v1.0", "application_development": "app_dev.v1.0", - "ibm_chatbot": "ibm_chatbot.v1.0", + "watson_chatbot": "ibm_chatbot.v1.0", "generic_dev": "app_dev.v1.0" } diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 3e91483b5..f6e97c501 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -66,11 +66,11 @@ const products = { icon: 'product-app', id: 'application_development' }, - 'IBM Chatbot': { - brief: 'IBM Chatbot', + 'Watson Chatbot': { + brief: 'Watson Chatbot', details: 'Build Chatbot using IBM Watson', icon: 'product-chatbot', - id: 'ibm_chatbot', + id: 'watson_chatbot', hidden: true }, 'Software Development': { From c6ce98e13e50e512b10b5fb99c6497901b7da90c Mon Sep 17 00:00:00 2001 From: Dimitrina Sirakova Date: Tue, 15 Aug 2017 00:26:33 +0300 Subject: [PATCH 16/19] fix #1092 --- src/components/App/App.scss | 2 +- src/components/TopBar/ProjectsToolBar.scss | 6 +++++- src/projects/create/components/FillProjectDetails.scss | 1 + src/projects/create/components/ProjectWizard.scss | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/App/App.scss b/src/components/App/App.scss index 409336184..ab5bfe4e1 100644 --- a/src/components/App/App.scss +++ b/src/components/App/App.scss @@ -2,7 +2,7 @@ body { min-width: 320px; - background-color: $tc-gray-neutral-dark; + background-color: $tc-gray-neutral-light; } .ReactModal__Body--open { diff --git a/src/components/TopBar/ProjectsToolBar.scss b/src/components/TopBar/ProjectsToolBar.scss index 85a8f1567..9ba4303fd 100644 --- a/src/components/TopBar/ProjectsToolBar.scss +++ b/src/components/TopBar/ProjectsToolBar.scss @@ -47,11 +47,12 @@ $tc-body-large : 20px; display: flex; align-items: center; // justify-content: center; - padding: 5px 2*$base-unit 5px 34px; + padding: 0 2*$base-unit 0 34px; text-align: left; color: $tc-gray-40; background-color: transparent; border-radius: 2px; + border: 0; font-size: 12px; position: relative; &:before{ @@ -173,6 +174,9 @@ $tc-body-large : 20px; top: 12px; z-index: 22;/* +1 from z-index of the modal overlay */ } + .FillProjectDetails .header { + margin: 35px 0 0; + } } .project-creation-dialog { diff --git a/src/projects/create/components/FillProjectDetails.scss b/src/projects/create/components/FillProjectDetails.scss index dd7c32d60..4a0a35a2a 100644 --- a/src/projects/create/components/FillProjectDetails.scss +++ b/src/projects/create/components/FillProjectDetails.scss @@ -28,6 +28,7 @@ .header { display: flex; justify-content: space-between; + margin-bottom: 30px; h1 { @include tc-heading; diff --git a/src/projects/create/components/ProjectWizard.scss b/src/projects/create/components/ProjectWizard.scss index d094be956..522caa70b 100644 --- a/src/projects/create/components/ProjectWizard.scss +++ b/src/projects/create/components/ProjectWizard.scss @@ -5,6 +5,7 @@ background: transparent; box-shadow: none; width: 100%; + margin-top: -30px; .ProjectTypeCard { background: $tc-white; From 39903e8dc58405d0f2441ee3397f4d1a85297e9a Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 16 Aug 2017 11:33:19 +0530 Subject: [PATCH 17/19] copy change for watson chatbot --- src/config/projectQuestions/ibm_chatbot.v1.0.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/projectQuestions/ibm_chatbot.v1.0.js b/src/config/projectQuestions/ibm_chatbot.v1.0.js index 3d917f1d4..92d361cc7 100644 --- a/src/config/projectQuestions/ibm_chatbot.v1.0.js +++ b/src/config/projectQuestions/ibm_chatbot.v1.0.js @@ -46,7 +46,7 @@ const sections = [ questions: [ { icon: 'question', - title: 'Are you an existing Watson Assistant customer?', + title: 'Are you an existing Watson Virtual Assistant customer?', description: '', fieldName: 'details.appDefinition.existingWatsonCustomer', type: 'checkbox', @@ -181,7 +181,7 @@ export const basicSections = [ { icon: 'question', required: true, - title: 'Are you an existing Watson Assistant customer?', + title: 'Are you an existing Watson Virtual Assistant customer?', description: '', fieldName: 'details.appDefinition.existingWatsonCustomer', type: 'radio-group', From d7d9f4b3ad55cc7d6ccf8af89c291ce1d6b5f43f Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 16 Aug 2017 13:28:28 +0530 Subject: [PATCH 18/19] Removed feature branch from being deployed to dev --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 989533340..8b7c6d9be 100644 --- a/circle.yml +++ b/circle.yml @@ -19,7 +19,7 @@ compile: deployment: development: - branch: [dev, feature/chatbot-product-type] + branch: [dev] owner: appirio-tech commands: - ./deploy.sh DEV From b043ae31a1d68fc59fce79bfb6e65b725ce68cfc Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 16 Aug 2017 16:49:32 +0530 Subject: [PATCH 19/19] =?UTF-8?q?Github=20issue#1033,=20Other=20Design's?= =?UTF-8?q?=20Project=20Name=20field=20error=20message=20is=20empty=20?= =?UTF-8?q?=E2=80=94=20copy=20changes=20as=20per=20https://github.com/appi?= =?UTF-8?q?rio-tech/connect-app/issues/1033#issuecomment-319538300?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/projectQuestions/app_dev.v1.0.js | 4 ++-- src/config/projectQuestions/avd.v1.0.js | 4 ++-- src/config/projectQuestions/ibm_chatbot.v1.0.js | 4 ++-- src/config/projectQuestions/topcoder.v1.js | 4 ++-- src/config/projectQuestions/visual_design.v1.0.js | 4 ++-- src/config/projectQuestions/wireframes.v1.0.js | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/config/projectQuestions/app_dev.v1.0.js b/src/config/projectQuestions/app_dev.v1.0.js index 3b73d7978..5d6e9b072 100644 --- a/src/config/projectQuestions/app_dev.v1.0.js +++ b/src/config/projectQuestions/app_dev.v1.0.js @@ -30,7 +30,7 @@ const sections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', @@ -240,7 +240,7 @@ export const basicSections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', diff --git a/src/config/projectQuestions/avd.v1.0.js b/src/config/projectQuestions/avd.v1.0.js index 7eae6bdb8..9a33c9419 100644 --- a/src/config/projectQuestions/avd.v1.0.js +++ b/src/config/projectQuestions/avd.v1.0.js @@ -32,7 +32,7 @@ const sections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', @@ -239,7 +239,7 @@ export const basicSections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', diff --git a/src/config/projectQuestions/ibm_chatbot.v1.0.js b/src/config/projectQuestions/ibm_chatbot.v1.0.js index 92d361cc7..9b729f5ae 100644 --- a/src/config/projectQuestions/ibm_chatbot.v1.0.js +++ b/src/config/projectQuestions/ibm_chatbot.v1.0.js @@ -30,7 +30,7 @@ const sections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', @@ -156,7 +156,7 @@ export const basicSections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', diff --git a/src/config/projectQuestions/topcoder.v1.js b/src/config/projectQuestions/topcoder.v1.js index 60f686bec..fe9c8be96 100644 --- a/src/config/projectQuestions/topcoder.v1.js +++ b/src/config/projectQuestions/topcoder.v1.js @@ -22,7 +22,7 @@ const sections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', @@ -214,7 +214,7 @@ export const basicSections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', diff --git a/src/config/projectQuestions/visual_design.v1.0.js b/src/config/projectQuestions/visual_design.v1.0.js index 85a338288..d45ee8097 100644 --- a/src/config/projectQuestions/visual_design.v1.0.js +++ b/src/config/projectQuestions/visual_design.v1.0.js @@ -33,7 +33,7 @@ const sections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', @@ -257,7 +257,7 @@ export const basicSections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', diff --git a/src/config/projectQuestions/wireframes.v1.0.js b/src/config/projectQuestions/wireframes.v1.0.js index f8659ba36..c877fbe35 100644 --- a/src/config/projectQuestions/wireframes.v1.0.js +++ b/src/config/projectQuestions/wireframes.v1.0.js @@ -33,7 +33,7 @@ const sections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name', @@ -240,7 +240,7 @@ export const basicSections = [ { id: 'projectName', required: true, - validationError: 'Please provide a name to your project', + validationError: 'Please provide a name for your project', fieldName: 'name', description: '', title: 'Project Name',