parent
0713e0f630
commit
acbdbdd13c
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0x30",
|
||||||
|
"green" : "0x3B",
|
||||||
|
"red" : "0xFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appearances" : [
|
||||||
|
{
|
||||||
|
"appearance" : "luminosity",
|
||||||
|
"value" : "dark"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0xFF",
|
||||||
|
"green" : "0xFF",
|
||||||
|
"red" : "0xFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0x59",
|
||||||
|
"green" : "0xC7",
|
||||||
|
"red" : "0x34"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appearances" : [
|
||||||
|
{
|
||||||
|
"appearance" : "luminosity",
|
||||||
|
"value" : "dark"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0xFF",
|
||||||
|
"green" : "0xFF",
|
||||||
|
"red" : "0xFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
@ -1,37 +0,0 @@
|
|||||||
//
|
|
||||||
// MatiereItem.swift
|
|
||||||
// App
|
|
||||||
//
|
|
||||||
// Created by BREUIL Yohann on 24/05/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
struct MatiereItem: View {
|
|
||||||
@State private var note = 12.5
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack {
|
|
||||||
HStack() {
|
|
||||||
Text("Qualité de Développement")
|
|
||||||
Spacer()
|
|
||||||
Text("6")
|
|
||||||
}
|
|
||||||
HStack {
|
|
||||||
Slider(
|
|
||||||
value: $note,
|
|
||||||
in: 0...20,
|
|
||||||
step: 0.1
|
|
||||||
)
|
|
||||||
Text("\(note)")
|
|
||||||
}
|
|
||||||
Divider()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct MatiereItem_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
MatiereItem()
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// NoteInfo.swift
|
||||||
|
// App
|
||||||
|
//
|
||||||
|
// Created by BREUIL Yohann on 26/05/2023.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct NoteInfo: View {
|
||||||
|
var body: some View {
|
||||||
|
VStack {
|
||||||
|
HStack() {
|
||||||
|
Text("Qualité de Développement")
|
||||||
|
Spacer()
|
||||||
|
Text("6")
|
||||||
|
}
|
||||||
|
NoteSlider()
|
||||||
|
Divider()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct NoteInfo_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
NoteInfo()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
//
|
||||||
|
// NoteSliderComponent.swift
|
||||||
|
// App
|
||||||
|
//
|
||||||
|
// Created by BREUIL Yohann on 25/05/2023.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct NoteSlider: View {
|
||||||
|
@State private var sliderProgress: CGFloat = 0
|
||||||
|
@State private var sliderWidth: CGFloat = 20
|
||||||
|
@State private var sliderMaxWidth: CGFloat = 200
|
||||||
|
@State private var sliderCurrentWidth: CGFloat = 0
|
||||||
|
|
||||||
|
var drag: some Gesture {
|
||||||
|
DragGesture()
|
||||||
|
.onChanged { value in
|
||||||
|
let translation = value.translation.width
|
||||||
|
sliderWidth = translation + sliderCurrentWidth
|
||||||
|
|
||||||
|
sliderWidth = sliderWidth > sliderMaxWidth ? sliderMaxWidth : sliderWidth
|
||||||
|
sliderWidth = sliderWidth >= 0 ? sliderWidth : 20
|
||||||
|
|
||||||
|
let progress = sliderWidth / sliderMaxWidth
|
||||||
|
sliderProgress = progress <= 1.0 ? progress : 1
|
||||||
|
}
|
||||||
|
.onEnded { value in
|
||||||
|
sliderWidth = sliderWidth > sliderMaxWidth ? sliderMaxWidth : sliderWidth
|
||||||
|
sliderWidth = sliderWidth >= 0 ? sliderWidth : 20
|
||||||
|
|
||||||
|
sliderCurrentWidth = sliderWidth
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack {
|
||||||
|
Rectangle()
|
||||||
|
.fill(sliderProgress < 0.5 ? Color("BadColor") : Color("GoodColor"))
|
||||||
|
.frame(width: sliderWidth, height: 25)
|
||||||
|
.clipShape(Capsule())
|
||||||
|
.gesture(drag)
|
||||||
|
Spacer()
|
||||||
|
Text("\(sliderProgress)")
|
||||||
|
}
|
||||||
|
.padding()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct NoteSliderComponent_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
NoteSlider()
|
||||||
|
}
|
||||||
|
}
|
@ -1,37 +0,0 @@
|
|||||||
//
|
|
||||||
// UEItem.swift
|
|
||||||
// App
|
|
||||||
//
|
|
||||||
// Created by BREUIL Yohann on 24/05/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
struct UEItem: View {
|
|
||||||
@State private var note = 12.5
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack {
|
|
||||||
HStack() {
|
|
||||||
Text("UE1 Génie Logiciel")
|
|
||||||
Spacer()
|
|
||||||
Text("6")
|
|
||||||
}
|
|
||||||
HStack {
|
|
||||||
Slider(
|
|
||||||
value: $note,
|
|
||||||
in: 0...20,
|
|
||||||
step: 0.1
|
|
||||||
)
|
|
||||||
Text("\(note)")
|
|
||||||
}
|
|
||||||
Divider()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct UEItem_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
UEItem()
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
@ -0,0 +1,18 @@
|
|||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct Bloc: Identifiable {
|
||||||
|
public let id: UUID
|
||||||
|
|
||||||
|
public var name: String
|
||||||
|
public var ues: [UE]
|
||||||
|
|
||||||
|
init(id: UUID, name: String, ues: [UE]) {
|
||||||
|
self.id = id
|
||||||
|
self.name = name
|
||||||
|
self.ues = ues
|
||||||
|
}
|
||||||
|
|
||||||
|
init(name: String, ues: [UE]) {
|
||||||
|
self.init(id: UUID(), name: name, ues: ues)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct Matiere : Identifiable {
|
||||||
|
public let id: UUID
|
||||||
|
|
||||||
|
public var name: String
|
||||||
|
public var factor: Int
|
||||||
|
public var note: Float
|
||||||
|
|
||||||
|
init(id: UUID, name: String, factor: Int, note: Float) {
|
||||||
|
self.id = id
|
||||||
|
self.name = name
|
||||||
|
self.factor = factor
|
||||||
|
self.note = note
|
||||||
|
}
|
||||||
|
|
||||||
|
init(name: String, factor: Int, note: Float) {
|
||||||
|
self.init(id: UUID(), name: name, factor: factor, note: note)
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +0,0 @@
|
|||||||
public struct Model {
|
|
||||||
public private(set) var text = "Hello, World!"
|
|
||||||
|
|
||||||
public init() {
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,48 @@
|
|||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct Stub {
|
||||||
|
func loadBlocs() -> [Bloc] {[
|
||||||
|
Bloc(name: "Total", ues: [
|
||||||
|
UE(number: 1, name: "Génie logiciel", factor: 6, matieres: [
|
||||||
|
Matiere(name: "Processus de développement", factor: 4, note: 19.04),
|
||||||
|
Matiere(name: "Programmation objets", factor: 9, note: 9.08),
|
||||||
|
Matiere(name: "Qualité de développement", factor: 5, note: 13),
|
||||||
|
Matiere(name: "Remise à niveau Objets", factor: 4, note: 12),
|
||||||
|
]),
|
||||||
|
UE(number: 2, name: "Systèmes et réseaux", factor: 6, matieres: [
|
||||||
|
Matiere(name: "Internet des Objets", factor: 4, note: 10),
|
||||||
|
Matiere(name: "Réseaux", factor: 4, note: 10),
|
||||||
|
Matiere(name: "Services Mobiles", factor: 4, note: 10),
|
||||||
|
Matiere(name: "Système", factor: 5, note: 10)
|
||||||
|
]),
|
||||||
|
UE(number: 3, name: "Insertion Professionnellle", factor: 6, matieres: [
|
||||||
|
Matiere(name: "Anglais", factor: 5, note: 10),
|
||||||
|
Matiere(name: "Économie", factor: 4, note: 10),
|
||||||
|
Matiere(name: "Gestion", factor: 3, note: 10),
|
||||||
|
Matiere(name: "Communication", factor: 4, note: 10)
|
||||||
|
]),
|
||||||
|
UE(number: 4, name: "Technologies Mobiles 1", factor: 9, matieres: [
|
||||||
|
Matiere(name: "Android", factor: 6, note: 10),
|
||||||
|
Matiere(name: "Architecture de projets .NET (1)", factor: 5, note: 10),
|
||||||
|
Matiere(name: "C++", factor: 4, note: 10),
|
||||||
|
Matiere(name: "Swift", factor: 5, note: 10)
|
||||||
|
]),
|
||||||
|
UE(number: 5, name: "Technologies Mobiles 2", factor: 9, matieres: [
|
||||||
|
Matiere(name: "Architecture de projets .NET (2)", factor: 4, note: 10),
|
||||||
|
Matiere(name: "Client / Serveur", factor: 4, note: 10),
|
||||||
|
Matiere(name: "iOS", factor: 5, note: 10),
|
||||||
|
Matiere(name: "Multiplateformes", factor: 3, note: 10),
|
||||||
|
Matiere(name: "QT Quick", factor: 5, note: 10),
|
||||||
|
Matiere(name: "Xamarin", factor: 5, note: 10)
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
Bloc(name: "Projet / Stage", ues: [
|
||||||
|
UE(number: 6, name: "Projet", factor: 9, matieres: [
|
||||||
|
Matiere(name: "Projet", factor: 1, note: 10)
|
||||||
|
]),
|
||||||
|
UE(number: 7, name: "Stage", factor: 15, matieres: [
|
||||||
|
Matiere(name: "Stage", factor: 1, note: 10)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct UE: Identifiable {
|
||||||
|
public let id: UUID
|
||||||
|
|
||||||
|
public var number: Int
|
||||||
|
public var name: String
|
||||||
|
public var factor: Int
|
||||||
|
public var matieres: [Matiere]
|
||||||
|
|
||||||
|
init(id: UUID, number: Int, name: String, factor: Int, matieres: [Matiere]) {
|
||||||
|
self.id = id
|
||||||
|
self.number = number
|
||||||
|
self.name = name
|
||||||
|
self.factor = factor
|
||||||
|
self.matieres = matieres
|
||||||
|
}
|
||||||
|
|
||||||
|
init(number: Int, name: String, factor: Int, matieres: [Matiere]) {
|
||||||
|
self.init(id: UUID(), number: number, name: name, factor: factor, matieres: matieres)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue