Inhalt
Aktueller Ordner:
duesseldorfer-schuelerinventar-xcode-androidstudio-xamarinViewController_DB.swift
//
// ViewController.swift
// DuesseldorferSchuelerinventarSwift
//
// Created by Paul Koop on 30.04.20.
// Copyright © 2020 Paul Koop. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
//Deklaration Normtabelle N SE HS
var normSE = [
[21.33,25.33,29.33,33.32,37.3],
[20.87,24.95,29.03,33.10,37.18],
[17.93,21.37,24.80,28.23,31.67],
[13.98,17.71,21.44,25.17,28.90],
[24.06,28.55,33.04,37.53,42.01],
[15.53,18.97,22.40,25.83,29.27]
];
//Deklaration Itembezeichner
var items = [
"Zuverlässigkeit",
"Arbeitstempo",
"Arbeitsplanung",
"Organisationsfähigkeit",
"Geschicklichkeit",
"Ordnung",
"Sorgfalt",
"Kreativitaet",
"Problemlosefaehigkeit",
"Abstarktionsvermoegen",
"Selbststaendigkeit",
"Belastbarkeit",
"Konzentrationsfaehigkeit",
"Verantwortungsbewusstsein",
"Eigeninitiative",
"Leistungsbereitschaft",
"Auffassungsgabe",
"Merkfaehigkeit",
"Motivationsfaehigkeit",
"Reflektionsfaehigkeit",
"Teamfaehigkeit",
"Hilfsbereitschaft",
"Kontaktfaehigkeit",
"RespektvollerUmgang",
"Kommunikationsfaehigkeit",
"Einfuehlungsvermoegen",
"Konfliktfaehigkeit",
"Kritikfaehigkeit",
"Schreiben",
"Lesen",
"Mathematik",
"Naturwissenschaften",
"Fremdsprachen",
"Praesentationsfaehigkeit",
"PC-Kenntnisse",
"FaecheruebergreifendesDenken"
];
//Deklaration Punkte Item SE 1..36 Vorbelegung 2 "selten"
var SEint = [
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
];
//Deklaration Punkte Kompetenzen 1..6
var SEPint = [[ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0,0 ]];
//Deklaration Itemnummer
var itemNr = 1
//Deklaration Profilid
var profilid = 0
//Deklaration Normtabelle lesen
func readNormTable() -> [[Double]] {
let phpScriptUrl = "https://mein-duesk.org/readNormTable.php"
guard let url = URL(string: phpScriptUrl) else {
print("Ungültige URL: \(phpScriptUrl)")
return []
}
do {
let data = try Data(contentsOf: url)
let jsonDecoder = JSONDecoder()
let normSE = try jsonDecoder.decode([[Double]].self, from: data)
return normSE
} catch {
print("Fehler beim Lesen der Normtabelle: \(error.localizedDescription)")
return []
}
}
//Deklaration Prolil lesen
func readSEint(profilid: Int) -> [Int] {
let phpScriptUrl = "https://mein-duesk.org/readSEint.php?profilid=\(profilid)"
guard let url = URL(string: phpScriptUrl) else {
print("Ungültige URL: \(phpScriptUrl)")
return []
}
do {
let data = try Data(contentsOf: url)
let jsonDecoder = JSONDecoder()
let SEint = try jsonDecoder.decode([Int].self, from: data)
return SEint
} catch {
print("Fehler beim Lesen der SEint-Daten: \(error.localizedDescription)")
return []
}
}
//Deklaration Profil Einfuegen updaten
func insertOrUpdateSEint(SEint: [Int], profilid: Int) -> Int? {
var newProfilID: Int?
let semaphore = DispatchSemaphore(value: 0)
// Erstelle die URL für die PHP-Datei
guard let url = URL(string: "https://mein-duesk.org/insertOrUpdateSEint.php") else {
print("Fehler: Ungültige URL")
return nil
}
// Erstelle die Anfrage
var request = URLRequest(url: url)
request.httpMethod = "POST"
// Füge die Daten als HTTP-Body hinzu
let parameters: [String: Any] = [
"SEint": SEint,
"profilid": profilid
]
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: [])
} catch {
print("Fehler: Fehler beim Serialisieren der Daten")
return nil
}
// Führe die Anfrage aus
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data, error == nil else {
print("Fehler: \(error?.localizedDescription ?? "Unbekannter Fehler")")
semaphore.signal()
return
}
// Verarbeite die Antwort
if let responseString = String(data: data, encoding: .utf8) {
if let profilID = Int(responseString) {
newProfilID = profilID
} else {
print("Fehler: Ungültige Profil-ID")
}
} else {
print("Fehler: Ungültige Antwort")
}
semaphore.signal()
}
task.resume()
semaphore.wait()
return newProfilID
}
//---------------------------------------------
@IBOutlet weak var textItemNr: UITextField!
@IBOutlet weak var textItem: UITextField!
@IBOutlet weak var ProgressViewKompetenz1: UIProgressView!
@IBOutlet weak var ProgressViewKompetenz2: UIProgressView!
@IBOutlet weak var ProgressViewKompetenz3: UIProgressView!
@IBOutlet weak var ProgressViewKompetenz4: UIProgressView!
@IBOutlet weak var ProgressViewKompetenz5: UIProgressView!
@IBOutlet weak var ProgressViewKompetenz6: UIProgressView!
@IBAction func ButtonWeiter(_ sender: UIButton) {
/*
a itemNr +=1;
b wenn itemNr > 36 dann itemNr =1;
c Kompetenzen aus Items aufsummieren
d Durch Vergleich mit Normtabelle Punkte für Kompetenz bestimmen
e Stand Progressbar aktualisieren
*/
//a
itemNr += 1;
//b
if (itemNr > 36) { itemNr = 1;
let profilid = insertOrUpdateSEint(SEint: SEint, profilid: profilid);
if (profilid > 0) {let SEinttest = readSEint(profilid: profilid);
if (SEinttest != nil) {
SEint = SEinttest}
}
}
textItem.text = items[itemNr-1];
textItemNr.text = String(itemNr);
//c
SEPint[0][0] = SEint[0] + SEint[1] + SEint[2] + SEint[3] + SEint[4] +
SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9];
SEPint[1][0] = SEint[10] + SEint[11] + SEint[12] + SEint[13] + SEint[14] +
SEint[15] + SEint[16] + SEint[17] + SEint[18] + SEint[19];
SEPint[2][0] = SEint[20] + SEint[21] + SEint[22] + SEint[23] + SEint[24] +
SEint[25] + SEint[26] + SEint[27] + SEint[8] + SEint[9];
SEPint[3][0] = SEint[28] + SEint[29] + SEint[30] + SEint[31] + SEint[32] +
SEint[33] + SEint[34] + SEint[35];
SEPint[4][0] = SEint[0] + SEint[1] +
SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9] +
SEint[10] + SEint[11] + SEint[13] + SEint[14];
SEPint[5][0] = SEint[2] + SEint[3] + SEint[4] +
SEint[8] + SEint[9] + SEint[10] +
SEint[16] + SEint[17];
//d
var punkte = false;
for k in 0...5
{
punkte = false;
for p in 0...4
{
if (Double(SEPint[k][0]) < normSE[k][p])
{
SEPint[k][1] = p + 1;
punkte = true;
break;
}
}
if (!punkte)
{
SEPint[k][1] = 5;
}
}
//e
ProgressViewKompetenz1.progress = Float(Double(SEPint[0][1]) * 0.2);
ProgressViewKompetenz2.progress = Float(Double(SEPint[1][1]) * 0.2);
ProgressViewKompetenz3.progress = Float(Double(SEPint[2][1]) * 0.2);
ProgressViewKompetenz4.progress = Float(Double(SEPint[3][1]) * 0.2);
ProgressViewKompetenz5.progress = Float(Double(SEPint[4][1]) * 0.2);
ProgressViewKompetenz6.progress = Float(Double(SEPint[5][1]) * 0.2);
}
@IBAction func ButtonImmer(_ sender: UIButton) {
SEint[itemNr - 1] = 4;
}
@IBAction func ButtonMeistens(_ sender: UIButton) {
SEint[itemNr - 1] = 3;
}
@IBAction func ButtonSelten(_ sender: UIButton) {
SEint[itemNr - 1] = 2;
}
@IBAction func ButtonNie(_ sender: UIButton) {
SEint[itemNr - 1] = 1;
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let normSEtest = readNormTable();
if (normSEtest != [[]]){
let normSE = normSEtest;
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}