v0.1 #1
| @ -3,6 +3,7 @@ import * as React from "react"; | ||||
| import Quick from "./Quick"; | ||||
| import QuickItem from "./QuickItem"; | ||||
| import QuickCategory from "./QuickCategory"; | ||||
| import Clock from "./Clock"; | ||||
| 
 | ||||
| class App extends React.Component { | ||||
| 	constructor(props) { | ||||
| @ -12,6 +13,7 @@ class App extends React.Component { | ||||
| 	render(): JSX.Element { | ||||
| 		return <div> | ||||
| 			<div className="center-wrapper"> | ||||
| 				<Clock/> | ||||
| 				<Quick> | ||||
| 					<QuickCategory name="Productivity"> | ||||
| 						<QuickItem name="Nextcloud" url="#"/> | ||||
|  | ||||
							
								
								
									
										64
									
								
								src/components/Clock.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/components/Clock.tsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | ||||
| import * as React from "react"; | ||||
| 
 | ||||
| import "../style/clock.scss"; | ||||
| 
 | ||||
| interface State { | ||||
| 	time: string; | ||||
| } | ||||
| 
 | ||||
| class Clock extends React.Component<{}, State> { | ||||
| 
 | ||||
| 	private interval: NodeJS.Timeout; | ||||
| 
 | ||||
| 	constructor(props) { | ||||
| 		super(props); | ||||
| 		this.state = { | ||||
| 			time: "12:00" | ||||
| 		}; | ||||
| 	} | ||||
| 
 | ||||
| 	updateTime() { | ||||
| 		const now = new Date(); | ||||
| 		 | ||||
| 		// Is there a native function for formatting time ??
 | ||||
| 		this.setState({ | ||||
| 			time: `${this.zeroPad(now.getHours(), 2)}:${this.zeroPad(now.getMinutes(), 2)}` | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	zeroPad(number: number, pad: number): string { | ||||
| 		const length = number.toString().length; | ||||
| 		if (length < pad) { | ||||
| 			return "0".repeat(pad - length) + number.toString(); | ||||
| 		} else { | ||||
| 			return number.toString(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	startTimer() { | ||||
| 		this.interval = setInterval(()=>{ | ||||
| 			this.updateTime(); | ||||
| 		},1000); | ||||
| 	} | ||||
| 
 | ||||
| 	componentDidMount() { | ||||
| 		this.updateTime(); | ||||
| 		this.startTimer(); | ||||
| 	} | ||||
| 
 | ||||
| 	componentWillUnmount(){ | ||||
| 		clearInterval(this.interval); | ||||
| 	} | ||||
| 
 | ||||
| 	render(): JSX.Element { | ||||
| 		return <div className="clock-component"> | ||||
| 			<div className="time"> | ||||
| 				{this.state.time} | ||||
| 			</div> | ||||
| 		</div>; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| export default Clock; | ||||
							
								
								
									
										8
									
								
								src/style/clock.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/style/clock.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| .clock-component{ | ||||
| 
 | ||||
| 
 | ||||
| 	.time{ | ||||
| 		font-size: 10em; | ||||
| 		text-align: center; | ||||
| 	} | ||||
| } | ||||
| @ -9,5 +9,5 @@ body { | ||||
| } | ||||
| 
 | ||||
| .center-wrapper{ | ||||
| 	margin-top: 25%; | ||||
| 	margin-top: 15%; | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user