Pause adding intermediary tables for now
This commit is contained in:
parent
f85074a41f
commit
c5453484d6
22
PlanItem.tsx
22
PlanItem.tsx
|
@ -23,7 +23,6 @@ export default function PlanItem({
|
||||||
const [show, setShow] = useState(false)
|
const [show, setShow] = useState(false)
|
||||||
const [anchor, setAnchor] = useState({x: 0, y: 0})
|
const [anchor, setAnchor] = useState({x: 0, y: 0})
|
||||||
const [today, setToday] = useState<string>()
|
const [today, setToday] = useState<string>()
|
||||||
const days = useMemo(() => item.days.split(','), [item.days])
|
|
||||||
const navigation = useNavigation<NavigationProp<PlanPageParams>>()
|
const navigation = useNavigation<NavigationProp<PlanPageParams>>()
|
||||||
|
|
||||||
useFocusEffect(
|
useFocusEffect(
|
||||||
|
@ -42,7 +41,7 @@ export default function PlanItem({
|
||||||
const start = useCallback(async () => {
|
const start = useCallback(async () => {
|
||||||
console.log(`${PlanItem.name}.start:`, {item})
|
console.log(`${PlanItem.name}.start:`, {item})
|
||||||
setShow(false)
|
setShow(false)
|
||||||
const workout = item.workouts.split(',')[0]
|
const workout = item.workouts[0].name
|
||||||
let first = await getBestSet(workout)
|
let first = await getBestSet(workout)
|
||||||
if (!first) first = {...defaultSet, name: workout}
|
if (!first) first = {...defaultSet, name: workout}
|
||||||
delete first.id
|
delete first.id
|
||||||
|
@ -64,25 +63,22 @@ export default function PlanItem({
|
||||||
|
|
||||||
const title = useMemo(
|
const title = useMemo(
|
||||||
() =>
|
() =>
|
||||||
days.map((day, index) => (
|
item.days?.map((day, index) => (
|
||||||
<Text key={day}>
|
<Text key={day.id}>
|
||||||
{day === today ? (
|
{day.name === today ? (
|
||||||
<Text style={{fontWeight: 'bold', textDecorationLine: 'underline'}}>
|
<Text style={{fontWeight: 'bold', textDecorationLine: 'underline'}}>
|
||||||
{day}
|
{day.name}
|
||||||
</Text>
|
</Text>
|
||||||
) : (
|
) : (
|
||||||
day
|
day.name
|
||||||
)}
|
)}
|
||||||
{index === days.length - 1 ? '' : ', '}
|
{index === item.days.length - 1 ? '' : ', '}
|
||||||
</Text>
|
</Text>
|
||||||
)),
|
)),
|
||||||
[days, today],
|
[item.days, today],
|
||||||
)
|
)
|
||||||
|
|
||||||
const description = useMemo(
|
const description = useMemo(() => item.workouts?.join(', '), [item.workouts])
|
||||||
() => item.workouts.replace(/,/g, ', '),
|
|
||||||
[item.workouts],
|
|
||||||
)
|
|
||||||
|
|
||||||
const copy = useCallback(() => {
|
const copy = useCallback(() => {
|
||||||
const plan: Plan = {...item}
|
const plan: Plan = {...item}
|
||||||
|
|
|
@ -20,11 +20,7 @@ export default function PlanList() {
|
||||||
const navigation = useNavigation<NavigationProp<PlanPageParams>>()
|
const navigation = useNavigation<NavigationProp<PlanPageParams>>()
|
||||||
|
|
||||||
const refresh = useCallback(async (value: string) => {
|
const refresh = useCallback(async (value: string) => {
|
||||||
planRepo
|
planRepo.find({}).then(setPlans)
|
||||||
.find({
|
|
||||||
where: [{days: Like(`%${value}%`)}, {workouts: Like(`%${value}%`)}],
|
|
||||||
})
|
|
||||||
.then(setPlans)
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useFocusEffect(
|
useFocusEffect(
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import {DataSource} from 'typeorm'
|
import {DataSource} from 'typeorm'
|
||||||
|
import {Day} from './day'
|
||||||
import GymSet from './gym-set'
|
import GymSet from './gym-set'
|
||||||
import {Sets1667185586014 as sets1667185586014} from './migrations/1667185586014-sets'
|
import {Sets1667185586014 as sets1667185586014} from './migrations/1667185586014-sets'
|
||||||
import {plans1667186124792} from './migrations/1667186124792-plans'
|
import {plans1667186124792} from './migrations/1667186124792-plans'
|
||||||
|
@ -24,14 +25,16 @@ import {addSetsCreated1667186451005} from './migrations/1667186451005-add-sets-c
|
||||||
import {addNoSound1667186456118} from './migrations/1667186456118-add-no-sound'
|
import {addNoSound1667186456118} from './migrations/1667186456118-add-no-sound'
|
||||||
import {dropMigrations1667190214743} from './migrations/1667190214743-drop-migrations'
|
import {dropMigrations1667190214743} from './migrations/1667190214743-drop-migrations'
|
||||||
import {splitColor1669420187764} from './migrations/1669420187764-split-color'
|
import {splitColor1669420187764} from './migrations/1669420187764-split-color'
|
||||||
|
import {addDays1670284587217} from './migrations/1670284587217-add-days'
|
||||||
import {Plan} from './plan'
|
import {Plan} from './plan'
|
||||||
import Settings from './settings'
|
import Settings from './settings'
|
||||||
|
import {Workout} from './workout'
|
||||||
|
|
||||||
export const AppDataSource = new DataSource({
|
export const AppDataSource = new DataSource({
|
||||||
type: 'react-native',
|
type: 'react-native',
|
||||||
database: 'massive.db',
|
database: 'massive.db',
|
||||||
location: 'default',
|
location: 'default',
|
||||||
entities: [GymSet, Plan, Settings],
|
entities: [GymSet, Plan, Settings, Day, Workout],
|
||||||
migrationsRun: true,
|
migrationsRun: true,
|
||||||
migrationsTableName: 'typeorm_migrations',
|
migrationsTableName: 'typeorm_migrations',
|
||||||
migrations: [
|
migrations: [
|
||||||
|
@ -59,5 +62,6 @@ export const AppDataSource = new DataSource({
|
||||||
addNoSound1667186456118,
|
addNoSound1667186456118,
|
||||||
dropMigrations1667190214743,
|
dropMigrations1667190214743,
|
||||||
splitColor1669420187764,
|
splitColor1669420187764,
|
||||||
|
addDays1670284587217,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
10
day.ts
Normal file
10
day.ts
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import {Column, Entity, PrimaryColumn} from 'typeorm'
|
||||||
|
|
||||||
|
@Entity('days')
|
||||||
|
export class Day {
|
||||||
|
@PrimaryColumn('int')
|
||||||
|
id: number
|
||||||
|
|
||||||
|
@Column('text')
|
||||||
|
name: string
|
||||||
|
}
|
27
migrations/1670284587217-add-days.ts
Normal file
27
migrations/1670284587217-add-days.ts
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import {MigrationInterface, QueryRunner, Table, TableColumn} from 'typeorm'
|
||||||
|
|
||||||
|
export class addDays1670284587217 implements MigrationInterface {
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.createTable(
|
||||||
|
new Table({
|
||||||
|
name: 'days',
|
||||||
|
columns: [
|
||||||
|
new TableColumn({name: 'id', type: 'int', isPrimary: true}),
|
||||||
|
new TableColumn({name: 'name', type: 'text', isNullable: false}),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
await queryRunner.dropColumn('plans', 'days')
|
||||||
|
await queryRunner.query(`
|
||||||
|
INSERT INTO days VALUES
|
||||||
|
(1, 'Sunday'),
|
||||||
|
(2, 'Monday'),
|
||||||
|
(3, 'Tuesday'),
|
||||||
|
(4, 'Wednesday'),
|
||||||
|
(5, 'Thursday'),
|
||||||
|
(6, 'Friday'),
|
||||||
|
(7, 'Saturday')`)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {}
|
||||||
|
}
|
14
plan.ts
14
plan.ts
|
@ -1,13 +1,17 @@
|
||||||
import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm'
|
import {Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn} from 'typeorm'
|
||||||
|
import {Day} from './day'
|
||||||
|
import {Workout} from './workout'
|
||||||
|
|
||||||
@Entity('plans')
|
@Entity('plans')
|
||||||
export class Plan {
|
export class Plan {
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
id?: number
|
id?: number
|
||||||
|
|
||||||
@Column('text')
|
@ManyToMany(() => Day)
|
||||||
days: string
|
@JoinTable()
|
||||||
|
days: Day[]
|
||||||
|
|
||||||
@Column('text')
|
@ManyToMany(() => Workout)
|
||||||
workouts: string
|
@JoinTable()
|
||||||
|
workouts: Workout[]
|
||||||
}
|
}
|
||||||
|
|
10
workout.ts
Normal file
10
workout.ts
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm'
|
||||||
|
|
||||||
|
@Entity('workouts')
|
||||||
|
export class Workout {
|
||||||
|
@PrimaryGeneratedColumn()
|
||||||
|
id?: number
|
||||||
|
|
||||||
|
@Column('text')
|
||||||
|
name: string
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user