Added radio buttons to market creation (non functional)
This commit is contained in:
		
							parent
							
								
									c3be126337
								
							
						
					
					
						commit
						645e891b73
					
				|  | @ -28,6 +28,7 @@ export type FullContract< | |||
|   isResolved: boolean | ||||
|   resolutionTime?: number // When the contract creator resolved the market
 | ||||
|   resolution?: string | ||||
|   resolutionType: 'manual' | 'combined' | 'automatic' | ||||
| 
 | ||||
|   closeEmailsSent?: number | ||||
| 
 | ||||
|  | @ -97,7 +98,9 @@ export type Numeric = { | |||
| } | ||||
| 
 | ||||
| export type outcomeType = 'BINARY' | 'MULTI' | 'FREE_RESPONSE' | 'NUMERIC' | ||||
| export type resolutionType = 'MANUAL' | 'COMBINED' | 'AUTOMATIC' | ||||
| export const OUTCOME_TYPES = ['BINARY', 'MULTI', 'FREE_RESPONSE', 'NUMERIC'] | ||||
| export const RESOLUTION_TYPES = ['MANUAL', 'COMBINED', 'AUTOMATIC'] | ||||
| 
 | ||||
| export const MAX_QUESTION_LENGTH = 480 | ||||
| export const MAX_DESCRIPTION_LENGTH = 10000 | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ import { | |||
|   FreeResponse, | ||||
|   Numeric, | ||||
|   outcomeType, | ||||
|   resolutionType, | ||||
| } from './contract' | ||||
| import { User } from './user' | ||||
| import { parseTags } from './util/parse' | ||||
|  | @ -25,6 +26,7 @@ export function getNewContract( | |||
|   ante: number, | ||||
|   closeTime: number, | ||||
|   extraTags: string[], | ||||
|   resolutionType: resolutionType, | ||||
| 
 | ||||
|   // used for numeric markets
 | ||||
|   bucketCount: number, | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ import { | |||
|   MAX_TAG_LENGTH, | ||||
|   Numeric, | ||||
|   OUTCOME_TYPES, | ||||
|   RESOLUTION_TYPES | ||||
| } from '../../common/contract' | ||||
| import { slugify } from '../../common/util/slugify' | ||||
| import { randomString } from '../../common/util/random' | ||||
|  | @ -44,6 +45,7 @@ export const createContract = newEndpoint(['POST'], async (req, _res) => { | |||
|     min, | ||||
|     max, | ||||
|     manaLimitPerUser, | ||||
|     resolutionType, | ||||
|   } = req.body || {} | ||||
| 
 | ||||
|   if (!question || typeof question != 'string') | ||||
|  | @ -87,6 +89,11 @@ export const createContract = newEndpoint(['POST'], async (req, _res) => { | |||
|   ) | ||||
|     throw new APIError(400, 'Invalid initial probability') | ||||
| 
 | ||||
|   resolutionType = resolutionType ?? 'MANUAL' | ||||
| 
 | ||||
|   if (!RESOLUTION_TYPES.includes(resolutionType)) | ||||
|   throw new APIError(400, 'Invalid resolutionType') | ||||
| 
 | ||||
|   // Uses utc time on server:
 | ||||
|   const yesterday = new Date() | ||||
|   yesterday.setUTCDate(yesterday.getUTCDate() - 1) | ||||
|  | @ -138,7 +145,8 @@ export const createContract = newEndpoint(['POST'], async (req, _res) => { | |||
|     NUMERIC_BUCKET_COUNT, | ||||
|     min ?? 0, | ||||
|     max ?? 0, | ||||
|     manaLimitPerUser ?? 0 | ||||
|     manaLimitPerUser ?? 0, | ||||
|     resolutionType, | ||||
|   ) | ||||
| 
 | ||||
|   if (!isFree && ante) await chargeUser(creator.id, ante, true) | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ import { FIXED_ANTE, MINIMUM_ANTE } from 'common/antes' | |||
| import { InfoTooltip } from 'web/components/info-tooltip' | ||||
| import { Page } from 'web/components/page' | ||||
| import { Row } from 'web/components/layout/row' | ||||
| import { MAX_DESCRIPTION_LENGTH, outcomeType } from 'common/contract' | ||||
| import { MAX_DESCRIPTION_LENGTH, outcomeType, resolutionType } from 'common/contract' | ||||
| import { formatMoney } from 'common/util/format' | ||||
| import { useHasCreatedContractToday } from 'web/hooks/use-has-created-contract-today' | ||||
| import { removeUndefinedProps } from 'common/util/object' | ||||
|  | @ -64,6 +64,7 @@ export function NewContract(props: { question: string; tag?: string }) { | |||
|   }, []) | ||||
| 
 | ||||
|   const [outcomeType, setOutcomeType] = useState<outcomeType>('BINARY') | ||||
|   const [resolutionType, setResolutionType] = useState<resolutionType>('MANUAL') | ||||
|   const [initialProb, setInitialProb] = useState(50) | ||||
|   const [minString, setMinString] = useState('') | ||||
|   const [maxString, setMaxString] = useState('') | ||||
|  | @ -365,6 +366,48 @@ export function NewContract(props: { question: string; tag?: string }) { | |||
|         )} | ||||
|       </div> | ||||
| 
 | ||||
|       <Spacer h={4} /> | ||||
|       <label className="label mt-1"> | ||||
|         <span className="my-1">Resolution type</span> | ||||
|       </label> | ||||
|       <Row className="form-control gap-2"> | ||||
|         <label className="label cursor-pointer gap-2"> | ||||
|           <input | ||||
|             className="radio" | ||||
|             type="radio" | ||||
|             name="res" | ||||
|             checked={resolutionType === 'MANUAL'} | ||||
|             value="MANUAL" | ||||
|             onChange={() => setResolutionType('MANUAL')} | ||||
|             disabled={isSubmitting} | ||||
|           /> | ||||
|           <span className="label-text">Manual</span> | ||||
|         </label> | ||||
| 
 | ||||
|         <label className="label cursor-pointer gap-2"> | ||||
|           <input | ||||
|             className="radio" | ||||
|             type="radio" | ||||
|             name="res" | ||||
|             checked={resolutionType === 'COMBINED'} | ||||
|             value="COMBINED" | ||||
|             onChange={() => setResolutionType('COMBINED')} | ||||
|             disabled={isSubmitting} | ||||
|           /> | ||||
|           <span className="label-text">Combined (experimental)</span> | ||||
|         </label> | ||||
|         <label className="label cursor-pointer gap-2"> | ||||
|           <input | ||||
|             className="radio" | ||||
|             type="radio" | ||||
|             name="res" | ||||
|             checked={resolutionType === 'AUTOMATIC'} | ||||
|             value="AUTOMATIC" | ||||
|             onChange={() => setResolutionType('AUTOMATIC')} | ||||
|           /> | ||||
|           <span className="label-text">Automatic (experimental)</span> | ||||
|         </label> | ||||
|       </Row> | ||||
|       <Spacer h={4} /> | ||||
| 
 | ||||
|       <div className="form-control mb-1 items-start"> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user