diff --git a/client/run-telepresence.sh b/client/run-telepresence.sh index 5b94efbfbb..4d04933744 100755 --- a/client/run-telepresence.sh +++ b/client/run-telepresence.sh @@ -25,7 +25,7 @@ Some deployment-specific information will be read from the your values.yaml file TEMPLATES='{"custom":true,"repositories": [{"name":"Renku","ref":"master", "url":"https://github.com/SwissDataScienceCenter/renku-project-template"}, -{"name":"Telepresence","ref":"0.1.11", +{"name":"Telepresence","ref":"0.2.1", "url":"https://github.com/SwissDataScienceCenter/renku-project-template"}]}' PREVIEW_THRESHOLD='{"soft":"1048576","hard":"10485760"}' UPLOAD_THRESHOLD='{"soft":"104857600"}' diff --git a/client/src/model/RenkuModels.js b/client/src/model/RenkuModels.js index 9c275e311b..98fb9afea3 100644 --- a/client/src/model/RenkuModels.js +++ b/client/src/model/RenkuModels.js @@ -196,6 +196,7 @@ const newProjectSchema = new Schema({ [Prop.SCHEMA]: new Schema({ title: { [Prop.INITIAL]: "", [Prop.MANDATORY]: true }, titlePristine: { [Prop.INITIAL]: true, [Prop.MANDATORY]: true }, + description: { [Prop.INITIAL]: "", [Prop.MANDATORY]: true }, namespace: { [Prop.INITIAL]: null, [Prop.MANDATORY]: true }, namespacePristine: { [Prop.INITIAL]: true, [Prop.MANDATORY]: true }, visibility: { [Prop.INITIAL]: "", [Prop.MANDATORY]: true }, @@ -214,6 +215,7 @@ const newProjectSchema = new Schema({ data: { [Prop.SCHEMA]: new Schema({ title: { [Prop.INITIAL]: "", [Prop.MANDATORY]: false }, + description: { [Prop.INITIAL]: "", [Prop.MANDATORY]: true }, namespace: { [Prop.INITIAL]: "", [Prop.MANDATORY]: false }, visibility: { [Prop.INITIAL]: "", [Prop.MANDATORY]: false }, template: { [Prop.INITIAL]: "", [Prop.MANDATORY]: false }, diff --git a/client/src/project/new/Project.style.css b/client/src/project/new/Project.style.css index a4b4801884..616eeb6184 100644 --- a/client/src/project/new/Project.style.css +++ b/client/src/project/new/Project.style.css @@ -94,3 +94,24 @@ svg.no-pointer { display: none !important; content: none !important; } + +.template-card { + cursor: pointer; +} + +.template-card:hover { + border-color: #009568; +} +.template-card:hover .card-footer { + border-color: #009568; + color: #009568; + background-color: white; +} +.template-card.selected { + border: 3px solid #009568; + color: #009568; +} + +.template-card img { + height: 60px; +} diff --git a/client/src/project/new/ProjectNew.container.js b/client/src/project/new/ProjectNew.container.js index ca172b1884..02cda6cdcf 100644 --- a/client/src/project/new/ProjectNew.container.js +++ b/client/src/project/new/ProjectNew.container.js @@ -459,7 +459,7 @@ class NewProject extends Component { if (creation.created) { this.refreshUserProjects(); if (!creation.kgError && !creation.projectError) { - const slug = `${creation.newNamespace}/${creation.newName}`; + const slug = `${creation.newNamespace}/${creation.newNameSlug}`; this.props.history.push(`/projects/${slug}`); } } diff --git a/client/src/project/new/ProjectNew.present.js b/client/src/project/new/ProjectNew.present.js index 8c76716f9e..51814965d2 100644 --- a/client/src/project/new/ProjectNew.present.js +++ b/client/src/project/new/ProjectNew.present.js @@ -28,17 +28,22 @@ import React, { Component, Fragment, useState, useEffect } from "react"; import { Link } from "react-router-dom"; import Autosuggest from "react-autosuggest"; import { - Alert, Button, ButtonGroup, Col, DropdownItem, Fade, Form, FormFeedback, FormGroup, FormText, Input, Label, - Modal, ModalBody, ModalFooter, ModalHeader, Row, Table, UncontrolledTooltip + Alert, Button, ButtonGroup, Card, CardBody, CardText, CardFooter, Col, DropdownItem, Fade, Form, + FormFeedback, FormGroup, FormText, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, + UncontrolledPopover, PopoverHeader, PopoverBody, Row, Table, UncontrolledTooltip } from "reactstrap"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faExclamationTriangle, faInfoCircle, faLink, faSyncAlt } from "@fortawesome/free-solid-svg-icons"; +import { + faExclamationTriangle, faInfoCircle, faLink, faQuestionCircle, faSyncAlt +} from "@fortawesome/free-solid-svg-icons"; import { ButtonWithMenu, Clipboard, ExternalLink, FieldGroup, Loader } from "../../utils/UIComponents"; -import { slugFromTitle } from "../../utils/HelperFunctions"; +import { simpleHash, slugFromTitle } from "../../utils/HelperFunctions"; import { capitalize } from "../../utils/formgenerator/FormGenerator.present"; import { Url } from "../../utils/url"; + import "./Project.style.css"; +import defaultTemplateIcon from "./templatePlaceholder.svg"; /** @@ -206,6 +211,7 @@ class NewProject extends Component {