Sammlung
This commit is contained in:
3
Sammlung/Praktikum/3/ias_p2_b0.1/app/__init__.py
Normal file
3
Sammlung/Praktikum/3/ias_p2_b0.1/app/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
# coding: utf-8
|
||||
|
||||
# hier können Paket-Initialisierungen eingetragen werden
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
33
Sammlung/Praktikum/3/ias_p2_b0.1/app/chargen.py
Normal file
33
Sammlung/Praktikum/3/ias_p2_b0.1/app/chargen.py
Normal file
@ -0,0 +1,33 @@
|
||||
# coding: utf-8
|
||||
|
||||
import time
|
||||
import codecs
|
||||
import json
|
||||
|
||||
from app import stream
|
||||
|
||||
class chargen_cl(object):
|
||||
exposed = True
|
||||
|
||||
chargenCounter = 1
|
||||
|
||||
def __init__(self):
|
||||
self.stream = stream.stream_cl()
|
||||
|
||||
def NEXT(self):
|
||||
if(self.chargenCounter > self.stream.anzChargen()):
|
||||
self.chargenCounter = 1
|
||||
|
||||
# timeout = 0
|
||||
# while(self.chargenCounter > self.stream.anzChargen()):
|
||||
# print(self.stream.anzChargen())
|
||||
# time.sleep(1)
|
||||
# timeout += 1
|
||||
# if(timeout > 3600):
|
||||
# return -1
|
||||
|
||||
newCharge = self.stream.loadCharge(self.chargenCounter)
|
||||
self.chargenCounter += 1
|
||||
|
||||
return json.dumps(newCharge)
|
||||
|
47
Sammlung/Praktikum/3/ias_p2_b0.1/app/log.py
Normal file
47
Sammlung/Praktikum/3/ias_p2_b0.1/app/log.py
Normal file
@ -0,0 +1,47 @@
|
||||
# coding: utf-8
|
||||
|
||||
import os
|
||||
import time
|
||||
import codecs
|
||||
import json
|
||||
|
||||
from app import stream
|
||||
|
||||
class log_cl(object):
|
||||
exposed = True
|
||||
|
||||
def __init__(self):
|
||||
self.stream = stream.stream_cl()
|
||||
|
||||
def SEND(self, user, charge, los, preis):
|
||||
|
||||
file = codecs.open(os.path.join('data', 'log.txt'), 'r', 'utf-8')
|
||||
log = json.loads(file.read())
|
||||
file.close()
|
||||
|
||||
counter = 1
|
||||
|
||||
for x in log:
|
||||
counter += 1
|
||||
|
||||
counter = str(counter)
|
||||
|
||||
log[counter] = {}
|
||||
log[counter]['user'] = user
|
||||
log[counter]['charge'] = charge
|
||||
log[counter]['los'] = los
|
||||
log[counter]['preis'] = preis
|
||||
log[counter]['time'] = time.time()
|
||||
|
||||
print(log)
|
||||
|
||||
file = codecs.open(os.path.join('data', 'log.txt'), 'w', 'utf-8')
|
||||
file.write(json.dumps(log, indent=3, ensure_ascii=True))
|
||||
file.close()
|
||||
|
||||
def REQ(self):
|
||||
file = codecs.open(os.path.join('data', 'log.txt'), 'r', 'utf-8')
|
||||
log = json.loads(file.read())
|
||||
file.close()
|
||||
|
||||
return json.dumps(log)
|
72
Sammlung/Praktikum/3/ias_p2_b0.1/app/manager.py
Normal file
72
Sammlung/Praktikum/3/ias_p2_b0.1/app/manager.py
Normal file
@ -0,0 +1,72 @@
|
||||
# coding: utf-8
|
||||
|
||||
import os
|
||||
import time
|
||||
import codecs
|
||||
import json
|
||||
|
||||
from app import stream
|
||||
|
||||
class manager_cl(object):
|
||||
exposed = True
|
||||
|
||||
def __init__(self):
|
||||
self.stream = stream.stream_cl()
|
||||
|
||||
def LIST(self):
|
||||
chargenliste = {}
|
||||
filenames = os.listdir('data')
|
||||
for filename in filenames:
|
||||
if filename.endswith('.json'):
|
||||
charge = codecs.open(os.path.join('data', filename), 'r', 'utf-8')
|
||||
chargeData = eval(charge.read())
|
||||
charge.close()
|
||||
|
||||
charge_id = filename[:-5]
|
||||
chargenliste[charge_id]={}
|
||||
chargenliste[charge_id]['chargeName'] = chargeData['info']['name']
|
||||
print(chargenliste)
|
||||
return json.dumps(chargenliste)
|
||||
|
||||
def GET(self, nr):
|
||||
data = {}
|
||||
data = self.stream.loadCharge(nr)
|
||||
return json.dumps(data)
|
||||
|
||||
def RECEIVE(self, dieCharge):
|
||||
dieCharge = json.loads(dieCharge)
|
||||
if dieCharge['info']['chargenNr'] == -1:
|
||||
filenames = os.listdir('data')
|
||||
maxNr = 0
|
||||
for filename in filenames:
|
||||
if filename.endswith('.json'):
|
||||
charge = codecs.open(os.path.join('data', filename), 'r', 'utf-8')
|
||||
chargeData = eval(charge.read())
|
||||
charge.close()
|
||||
|
||||
if maxNr < chargeData['info']['chargenNr']:
|
||||
maxNr = chargeData['info']['chargenNr']
|
||||
|
||||
dieCharge['info']['chargenNr'] = maxNr + 1
|
||||
name = str(maxNr + 1)
|
||||
name += '.json'
|
||||
|
||||
file = codecs.open(os.path.join('data', name), 'w', 'utf-8')
|
||||
file.write(json.dumps(dieCharge, indent = 3, ensure_ascii = True))
|
||||
file.close()
|
||||
|
||||
else:
|
||||
name = str(dieCharge['info']['chargenNr'])
|
||||
name += '.json'
|
||||
|
||||
file = codecs.open(os.path.join('data', name), 'w', 'utf-8')
|
||||
file.write(json.dumps(dieCharge, indent = 3, ensure_ascii = True))
|
||||
file.close()
|
||||
|
||||
def DELETE(self, nr):
|
||||
path = 'data/'
|
||||
path += str(nr)
|
||||
path += '.json'
|
||||
print(path)
|
||||
|
||||
os.remove(path)
|
31
Sammlung/Praktikum/3/ias_p2_b0.1/app/stream.py
Normal file
31
Sammlung/Praktikum/3/ias_p2_b0.1/app/stream.py
Normal file
@ -0,0 +1,31 @@
|
||||
# coding: utf-8
|
||||
import os
|
||||
import os.path
|
||||
import codecs
|
||||
import json
|
||||
|
||||
class stream_cl(object):
|
||||
exposed = True
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def loadCharge(self, id):
|
||||
filename = str(id)
|
||||
filename += '.json'
|
||||
|
||||
file = codecs.open(os.path.join('data', filename), 'r', 'utf-8')
|
||||
charge = file.read()
|
||||
file.close()
|
||||
|
||||
return charge
|
||||
|
||||
def anzChargen(self):
|
||||
files = os.listdir('data')
|
||||
fileCounter = 0
|
||||
|
||||
for file in files:
|
||||
if file.endswith('.json'):
|
||||
fileCounter += 1
|
||||
|
||||
return fileCounter
|
55
Sammlung/Praktikum/3/ias_p2_b0.1/app/template.py
Normal file
55
Sammlung/Praktikum/3/ias_p2_b0.1/app/template.py
Normal file
@ -0,0 +1,55 @@
|
||||
# coding: utf-8
|
||||
|
||||
|
||||
#not planned
|
||||
|
||||
import json
|
||||
|
||||
import os
|
||||
import codecs
|
||||
|
||||
import cherrypy
|
||||
|
||||
# Method-Dispatching!
|
||||
|
||||
# Übersicht Anforderungen / Methoden
|
||||
# (beachte: / relativ zu /template, siehe Konfiguration Server!)
|
||||
|
||||
"""
|
||||
|
||||
Anforderung GET PUT POST DELETE
|
||||
----------------------------------------------------------------
|
||||
/ Alle - - -
|
||||
Templates
|
||||
liefern
|
||||
|
||||
"""
|
||||
|
||||
#----------------------------------------------------------
|
||||
class Template_cl(object):
|
||||
#----------------------------------------------------------
|
||||
|
||||
exposed = True # gilt für alle Methoden
|
||||
|
||||
#-------------------------------------------------------
|
||||
def __init__(self):
|
||||
#-------------------------------------------------------
|
||||
pass
|
||||
|
||||
#-------------------------------------------------------
|
||||
def GET(self):
|
||||
#-------------------------------------------------------
|
||||
retVal_o = {
|
||||
'templates': {}
|
||||
}
|
||||
|
||||
files_a = os.listdir('templates/engine')
|
||||
for fileName_s in files_a:
|
||||
file_o = codecs.open(os.path.join('templates/engine', fileName_s), 'rU', 'utf-8')
|
||||
content_s = file_o.read()
|
||||
file_o.close()
|
||||
retVal_o["templates"][fileName_s] = content_s
|
||||
|
||||
return json.dumps(retVal_o)
|
||||
|
||||
# EOF
|
836
Sammlung/Praktikum/3/ias_p2_b0.1/changelog_ias_p2_b0.1.txt
Normal file
836
Sammlung/Praktikum/3/ias_p2_b0.1/changelog_ias_p2_b0.1.txt
Normal file
@ -0,0 +1,836 @@
|
||||
version:
|
||||
b0.1
|
||||
|
||||
date/time:
|
||||
19.06.15/09:07
|
||||
|
||||
fixed:
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
|
||||
new:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- verwendung inheritance
|
||||
|
||||
planned:
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- Wizard
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- eingaben kontrollieren, ung<6E>ltige eingaben verhindern
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.29
|
||||
|
||||
date/time:
|
||||
19.06.15/06:37
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
new:
|
||||
- Style
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.28
|
||||
|
||||
date/time:
|
||||
19.06.15/06:07
|
||||
|
||||
fixed:
|
||||
- Wizard spackt nicht mehr rum
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
new:
|
||||
-
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.27
|
||||
|
||||
date/time:
|
||||
19.06.15/05:42
|
||||
|
||||
fixed:
|
||||
- DayZ
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
new:
|
||||
- keine Ahnung, irgendwas mit bearbeiten
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.26
|
||||
|
||||
date/time:
|
||||
19.06.15/05:17
|
||||
|
||||
fixed:
|
||||
- beim Wechsel zur Ansicht Chargenmanager wird der Auktionsclock nicht angehalten
|
||||
- Bots kaufen nicht aus neu erstellten Chargen
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
new:
|
||||
-
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.25
|
||||
|
||||
date/time:
|
||||
19.06.15/04:43
|
||||
|
||||
fixed:
|
||||
- Chargenliste nicht flexibel, kann nur Charge 1 & 2
|
||||
|
||||
known issues:
|
||||
- Bots kaufen nicht aus neu erstellten Chargen
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- beim Wechsel zur Ansicht Chargenmanager wird der Auktionsclock nicht angehalten. implementierungssache
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
new:
|
||||
- Das erstellen neuer Chargen ist vollst<73>ndig m<>glich
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.24
|
||||
|
||||
date/time:
|
||||
19.06.15/03:42
|
||||
|
||||
fixed:
|
||||
- Wechsel von Ansicht Chargenmanager zu Auktion l<>dt irgend ein altes Template (Button Chargenmananger
|
||||
ohne Funktion), Versionspingpong?
|
||||
- ChargenWizard: neue Charge wird noch nicht an Server <20>bermittelt
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Chargenliste nicht flexibel, kann nur Charge 1 & 2
|
||||
- beim Wechsel zur Ansicht Chargenmanager wird der Auktionsclock nicht angehalten. implementierungssache
|
||||
- Daten "neue Charge" oder "ge<67>nderte Charge" werden vom Server empfangen aber noch nicht weiterverarbeitet
|
||||
|
||||
new:
|
||||
- Anzahl der Lose pro Charge auf 10 begrenzt
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.23
|
||||
|
||||
date/time:
|
||||
19.06.15/02:51
|
||||
|
||||
fixed:
|
||||
- Chargenwizard: Buttons beim erstellen von Losen buggy
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- Wechsel von Ansicht Chargenmanager zu Auktion l<>dt irgend ein altes Template (Button Chargenmananger
|
||||
ohne Funktion), Versionspingpong?
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Chargenliste nicht flexibel, kann nur Charge 1 & 2
|
||||
- ChargenWizard: neue Charge wird noch nicht an Server <20>bermittelt
|
||||
|
||||
new:
|
||||
-
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.22
|
||||
|
||||
date/time:
|
||||
19.06.15/02:21
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- Wechsel von Ansicht Chargenmanager zu Auktion l<>dt irgend ein altes Template (Button Chargenmananger
|
||||
ohne Funktion), Versionspingpong?
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
- Chargenliste nicht flexibel, kann nur Charge 1 & 2
|
||||
- Chargenwizard: Buttons beim erstellen von Losen buggy
|
||||
|
||||
new:
|
||||
- ChargenWizard
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht bearbeiten l<>schen buttons in liste
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- Eindeutigkeit Chargenname
|
||||
- laufende Charge zur Bearbeitung sperren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.21
|
||||
|
||||
date/time:
|
||||
18.06.15/21:05
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- Wechsel von Ansicht Chargenmanager zu Auktion l<>dt irgend ein altes Template (Button Chargenmananger
|
||||
ohne Funktion), Versionspingpong?
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
|
||||
new:
|
||||
- Chargenmanager: Chargenliste
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.20
|
||||
|
||||
date/time:
|
||||
18.06.15/15:00
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots laufen weiter wenn man in anderer Ansicht ist und erzeugen Fehler
|
||||
- Wechsel von Ansicht Chargenmanager zu Auktion l<>dt irgend ein altes Template (Button Chargenmananger
|
||||
ohne Funktion), Versionspingpong?
|
||||
- wenn Auktionszeit = 0 bei Wechsel ansicht, wird beim Wechsel zur<75>ck zu Auktion Canvas nicht mehr angezeigt
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- Logfile wird in "falscher" Reihenfolge angezeigt
|
||||
- Uhrzeit in Logfiles wird nicht korrekt dargestellt
|
||||
- [F5] skippt aktuelle Charge
|
||||
|
||||
new:
|
||||
- TemplateEngine implementiert
|
||||
- Logfile Anzeige implementiert
|
||||
- Loggingsystem vollst<73>ndig implementiert
|
||||
- Auktionstakt pausieren/weiter f<>r Wechsel in Chargenmanageransicht und Logfile Ansicht
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- JS, AJAX
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.18
|
||||
|
||||
date/time:
|
||||
17.06.15/20:24
|
||||
|
||||
fixed:
|
||||
- Dateistruktur intuitiver gestaltet
|
||||
- Testcharge aus chargenloader.js entfernt da nicht mehr notwendig
|
||||
|
||||
known issues:
|
||||
- Sinn von 'auktionPreis' unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
- User kann Logfile noch nicht anzeigen
|
||||
|
||||
new:
|
||||
- erste Version Loggingsystem: Logs werden angelegt
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- Logfile
|
||||
- JS, AJAX
|
||||
- Auktionstakt pausieren/weiter f<>r Wechsel in Chargenmanageransicht
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- verwendung uikit(css framework)
|
||||
- verwendung inheritance
|
||||
- verwendung eventService
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.17
|
||||
|
||||
date/time:
|
||||
17.06.15/14:15
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
- "uncaught exception: out of memory" tritt sporadisch auf, hat aber keinen Einfluss auf Funktionsweise
|
||||
|
||||
new:
|
||||
- bei Kauf durch Bot farbliche Signalisierung am BotButton
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- Logfile
|
||||
- JS, AJAX
|
||||
- Auktionstakt pausieren/weiter f<>r Wechsel in Chargenmanageransicht
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.16
|
||||
|
||||
date/time:
|
||||
17.06.15/13:10
|
||||
|
||||
fixed:
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
|
||||
known issues:
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
- Server stellt die Chargen in Endlosschleife zu verf<72>gung -> kein Simulationsende weil keine
|
||||
Chargen mehr auf Server, somit ist der Aspekt "Chargen zur Verf<72>gungstellen" server und clientseitig
|
||||
fertig
|
||||
- Botbuttons togglen bei Click Funktion (start/stop) und Farbe (gr<67>n/grau)
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Funktion zum Empfangen neuer/bearbeiteter Chargen (Chargenmanager)
|
||||
- Funtion zum L<>schen einer Charge (Chargenmanager)
|
||||
- Logfile
|
||||
- JS, AJAX
|
||||
- bei Kauf durch Bot farbliche Signalisierung am BotButton
|
||||
- Chargenmanager
|
||||
- chargen<65>bersicht
|
||||
- Wizard
|
||||
- Ansicht
|
||||
- NavLeiste
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
- Gestaltgesetze
|
||||
- Doku
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.15
|
||||
|
||||
date/time:
|
||||
10.06.15/20:20
|
||||
|
||||
fixed:
|
||||
- Verarbeitung mehrerer Chargen
|
||||
|
||||
known issues:
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
-
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Weiterverarbeitung fertiger Chargen
|
||||
- LeerCharge
|
||||
- Funktion zum Empfangen neuer Chargen
|
||||
- Loggingfile
|
||||
- JS, AJAX
|
||||
- Serveranfrage Chargendaten
|
||||
- Chargenmanager
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.14
|
||||
|
||||
date/time:
|
||||
10.06.15/19:19
|
||||
|
||||
fixed:
|
||||
- Chargendaten werden jetzt "geparst" und vom Client weiterverarbeitet
|
||||
|
||||
known issues:
|
||||
- Server verarbeitet nur die erste Charge
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
-
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- LeerCharge
|
||||
- Funktion zum Empfangen neuer Chargen
|
||||
- Loggingfile
|
||||
- JS, AJAX
|
||||
- Serveranfrage Chargendaten
|
||||
- Chargenmanager
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.13
|
||||
|
||||
date/time:
|
||||
09.06.15/23:57
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- vom Server erhaltene Chargendaten werden nicht korrekt weiterverarbeitet
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
- Implementierung der Abfrage und Auslieferung der bestehenden Chargen
|
||||
an den Client
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- LeerCharge
|
||||
- Funktion zum Empfangen neuer Chargen
|
||||
- Loggingfile
|
||||
- JS, AJAX
|
||||
- Serveranfrage Chargendaten
|
||||
- Chargenmanager
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.12
|
||||
|
||||
date/time:
|
||||
09.06.15/21:54
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
- Testchargen angelegt
|
||||
- Erstellung der grundlegenden Serverstrukturen
|
||||
|
||||
planned:
|
||||
- Python
|
||||
- Chargensystem
|
||||
- Testchargen
|
||||
- LeerCharge
|
||||
- Funktion zur Auslieferung
|
||||
- Funktion zum Empfangen neuer Chargen
|
||||
- Loggingfile
|
||||
- JS, AJAX
|
||||
- Serveranfrage Chargendaten
|
||||
- Chargenmanager
|
||||
- Loggingsystem implementieren
|
||||
- Markup <20>berarbeiten (TemplateEngine implementieren)
|
||||
- CSS
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a.0.11
|
||||
|
||||
date/time:
|
||||
06.06.15/16:15
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
- grundlegende Serverstruktur
|
||||
|
||||
planned:
|
||||
- Server f<>r Datenhaltung
|
||||
- Seitenwechsel mit Ajax
|
||||
- Umstrukturierung HTML-Seite
|
||||
- Chargenmanager
|
||||
- Verwendung Template-Engine
|
||||
- Logfile f<>r Auktionsverl<72>ufe
|
||||
- <20>berarbeitung der Darstellung der Button zur Simulationssteuerung
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.10
|
||||
|
||||
date/time:
|
||||
06.06.2015/15:46
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
- nur ein Backup...
|
||||
|
||||
planned:
|
||||
- Server f<>r Datenhaltung
|
||||
- Seitenwechsel mit Ajax
|
||||
- Umstrukturierung HTML-Seite
|
||||
- Chargenmanager
|
||||
- Verwendung Template-Engine
|
||||
- Logfile f<>r Auktionsverl<72>ufe
|
||||
- <20>berarbeitung der Darstellung der Button zur Simulationssteuerung
|
||||
|
||||
######################################################################################
|
||||
|
||||
version:
|
||||
a0.09
|
||||
|
||||
date/time:
|
||||
20.05.2015/13:10
|
||||
|
||||
fixed:
|
||||
-
|
||||
|
||||
known issues:
|
||||
- Bots "kaufen" weiter nach letzer Auktion
|
||||
- Bots kann man nur einschalten, nicht aus
|
||||
- Sinn von 'auktionPreis' (transfer.js / var testcharge) unklar
|
||||
|
||||
new:
|
||||
- farbliche Verdeutlichung des Auktionsfortschrittes in Canvas
|
||||
|
||||
planned:
|
||||
- Server f<>r Datenhaltung
|
||||
- Chargenmanager
|
||||
- Logfile f<>r Auktionsverl<72>ufe
|
||||
- <20>berarbeitung der Darstellung der Button zur Simulationssteuerung
|
71
Sammlung/Praktikum/3/ias_p2_b0.1/css/auktionsansicht.css
Normal file
71
Sammlung/Praktikum/3/ias_p2_b0.1/css/auktionsansicht.css
Normal file
@ -0,0 +1,71 @@
|
||||
#canvas{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 500px;
|
||||
width: 300px;
|
||||
margin: 0;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
#aktuelleAuktion{
|
||||
position: absolute;
|
||||
top: 410px;
|
||||
left: 500px;
|
||||
width: 300px;
|
||||
margin: 0px;
|
||||
height: 150px;
|
||||
background-color: #f9802f;
|
||||
border-radius: 10px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
#naechsteAuktion{
|
||||
position: absolute;
|
||||
top: 410px;
|
||||
left: 150px;
|
||||
width: 300px;
|
||||
margin: 0;
|
||||
height: 150px;
|
||||
background-color: #2fdbf9;
|
||||
border-radius: 10px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
#letzteAuktion{
|
||||
position: absolute;
|
||||
top: 410px;
|
||||
left: 850px;
|
||||
width: 300px;
|
||||
margin: 0;
|
||||
height: 150px;
|
||||
background-color: #dbdad9;
|
||||
border-radius: 10px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
}
|
||||
#kaufen{
|
||||
position: absolute;
|
||||
top: 310px;
|
||||
height :80px;
|
||||
width: 200px;
|
||||
left: 550px;
|
||||
background-color: green;
|
||||
border-radius: 10px;
|
||||
}
|
||||
#simManager{
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 0;
|
||||
width: 100px;
|
||||
}
|
||||
button{
|
||||
width: 100px;
|
||||
background-color: #dbdad9;
|
||||
}
|
||||
.bigbutton{
|
||||
height: 50px;
|
||||
width: 100px;
|
||||
background-color: #dbdad9;
|
||||
}
|
14
Sammlung/Praktikum/3/ias_p2_b0.1/css/botButton.css
Normal file
14
Sammlung/Praktikum/3/ias_p2_b0.1/css/botButton.css
Normal file
@ -0,0 +1,14 @@
|
||||
.botButtonActiveStyle{
|
||||
height: 50px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
.botButtonInactiveStyle{
|
||||
height: 50px;
|
||||
background-color: #dbdad9;
|
||||
}
|
||||
|
||||
.botButtonBuyActionStyle{
|
||||
height: 50px;
|
||||
background-color: yellow;
|
||||
}
|
8
Sammlung/Praktikum/3/ias_p2_b0.1/css/wizardButton.css
Normal file
8
Sammlung/Praktikum/3/ias_p2_b0.1/css/wizardButton.css
Normal file
@ -0,0 +1,8 @@
|
||||
.wizardButtonNeu{
|
||||
height: 50px;
|
||||
background-color: yellow;
|
||||
}
|
||||
.wizardButtonFertig{
|
||||
height: 50px;
|
||||
background-color: green;
|
||||
}
|
67
Sammlung/Praktikum/3/ias_p2_b0.1/data/1.json
Normal file
67
Sammlung/Praktikum/3/ias_p2_b0.1/data/1.json
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"6": {
|
||||
"beschreibung": "derPreisistHEISS",
|
||||
"minPreis": 100,
|
||||
"startPreis": 750,
|
||||
"auktionDauer": 120,
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 10,
|
||||
"vkPreis": -1,
|
||||
"auktionPreis": -1
|
||||
},
|
||||
"4": {
|
||||
"beschreibung": "Rosensparpacket",
|
||||
"minPreis": 300,
|
||||
"startPreis": 400,
|
||||
"auktionDauer": 30,
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 5,
|
||||
"vkPreis": -1,
|
||||
"auktionPreis": -1
|
||||
},
|
||||
"5": {
|
||||
"beschreibung": "Reste",
|
||||
"minPreis": 600,
|
||||
"startPreis": 800,
|
||||
"auktionDauer": 60,
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 10,
|
||||
"vkPreis": -1,
|
||||
"auktionPreis": -1
|
||||
},
|
||||
"2": {
|
||||
"beschreibung": "einzelneRose",
|
||||
"minPreis": 50,
|
||||
"startPreis": 100,
|
||||
"auktionDauer": 10,
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 1,
|
||||
"vkPreis": -1,
|
||||
"auktionPreis": -1
|
||||
},
|
||||
"3": {
|
||||
"beschreibung": "Rosensparpacket",
|
||||
"minPreis": 300,
|
||||
"startPreis": 400,
|
||||
"auktionDauer": 30,
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 5,
|
||||
"vkPreis": -1,
|
||||
"auktionPreis": -1
|
||||
},
|
||||
"info": {
|
||||
"name": "Rosen",
|
||||
"chargenNr": 1,
|
||||
"anzAuk": 6
|
||||
},
|
||||
"1": {
|
||||
"beschreibung": "einzelneRose",
|
||||
"minPreis": 50,
|
||||
"startPreis": 100,
|
||||
"auktionDauer": 10,
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 1,
|
||||
"vkPreis": -1,
|
||||
"auktionPreis": -1
|
||||
}
|
||||
}
|
87
Sammlung/Praktikum/3/ias_p2_b0.1/data/2.json
Normal file
87
Sammlung/Praktikum/3/ias_p2_b0.1/data/2.json
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
"3": {
|
||||
"minPreis": 150,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 330,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "Kompost"
|
||||
},
|
||||
"2": {
|
||||
"minPreis": 100,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 220,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "Rueben"
|
||||
},
|
||||
"1": {
|
||||
"minPreis": 50,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 110,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "Kraut"
|
||||
},
|
||||
"7": {
|
||||
"minPreis": 10,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 100,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 20,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "sonstiges"
|
||||
},
|
||||
"6": {
|
||||
"minPreis": 300,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 660,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "Dreck"
|
||||
},
|
||||
"5": {
|
||||
"minPreis": 250,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 550,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "Laub"
|
||||
},
|
||||
"4": {
|
||||
"minPreis": 200,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 440,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"anzGebinde": 1,
|
||||
"beschreibung": "Spinat"
|
||||
},
|
||||
"info": {
|
||||
"name": "Gruenzeug",
|
||||
"anzAuk": 8,
|
||||
"chargenNr": 2
|
||||
},
|
||||
"8": {
|
||||
"minPreis": 1,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 10,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 5,
|
||||
"anzGebinde": 100,
|
||||
"beschreibung": "Bonus"
|
||||
}
|
||||
}
|
37
Sammlung/Praktikum/3/ias_p2_b0.1/data/3.json
Normal file
37
Sammlung/Praktikum/3/ias_p2_b0.1/data/3.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"3": {
|
||||
"minPreis": 50,
|
||||
"auktionLaufzeit": 0,
|
||||
"startPreis": 10000,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 200,
|
||||
"anzGebinde": 5,
|
||||
"beschreibung": "willkeiner"
|
||||
},
|
||||
"2": {
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 2,
|
||||
"startPreis": 150,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 20,
|
||||
"beschreibung": "los2",
|
||||
"minPreis": 100
|
||||
},
|
||||
"1": {
|
||||
"auktionLaufzeit": 0,
|
||||
"anzGebinde": 1,
|
||||
"startPreis": 100,
|
||||
"auktionPreis": -1,
|
||||
"vkPreis": -1,
|
||||
"auktionDauer": 10,
|
||||
"beschreibung": "los1",
|
||||
"minPreis": 50
|
||||
},
|
||||
"info": {
|
||||
"name": "testcharge1",
|
||||
"anzAuk": 3,
|
||||
"chargenNr": 3
|
||||
}
|
||||
}
|
2732
Sammlung/Praktikum/3/ias_p2_b0.1/data/log.txt
Normal file
2732
Sammlung/Praktikum/3/ias_p2_b0.1/data/log.txt
Normal file
File diff suppressed because it is too large
Load Diff
56
Sammlung/Praktikum/3/ias_p2_b0.1/index.html
Normal file
56
Sammlung/Praktikum/3/ias_p2_b0.1/index.html
Normal file
@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Blumenladen 333</title>
|
||||
|
||||
<meta charset = "UTF-8" />
|
||||
<style type = "text/css">
|
||||
@import url("css/auktionsansicht.css");
|
||||
@import url("css/botButton.css");
|
||||
@import url("css/wizardButton.css");
|
||||
</style>
|
||||
|
||||
<script type = "text/javascript" src = "js/import/jquery-1.9.1.js"></script>
|
||||
<script type = "text/javascript" src = "js/import/inheritance.js"></script>
|
||||
<script type = "text/javascript" src = "js/import/es.js"></script>
|
||||
<script type = "text/javascript" src = "js/import/te.js"></script>
|
||||
<script type = "text/javascript" src = "js/import/tm.js"></script>
|
||||
|
||||
|
||||
<script type = "text/javascript" src = "js/view/viewAuktion.js"></script>
|
||||
<script type = "text/javascript" src = "js/view/viewLog.js"></script>
|
||||
<script type = "text/javascript" src = "js/view/viewChargenmanager.js"></script>
|
||||
<script type = "text/javascript" src = "js/view/viewCanvas.js"></script>
|
||||
|
||||
<script type = "text/javascript" src = "js/transfer/chargenloader.js"></script>
|
||||
<script type = "text/javascript" src = "js/transfer/log.js"></script>
|
||||
<script type = "text/javascript" src = "js/transfer/managerloader.js"></script>
|
||||
|
||||
<script type = "text/javascript" src = "js/bot/bot.js"></script>
|
||||
<script type = "text/javascript" src = "js/bot/botButtonStyle.js"></script>
|
||||
|
||||
<script type = "text/javascript" src = "js/kaufen.js"></script>
|
||||
<script type = "text/javascript" src = "js/wizard.js"></script>
|
||||
<script type = "text/javascript" src = "js/main.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div align = "center" id = "content">
|
||||
<canvas id = "canvas" width = "300" height = "300">Canvas</canvas>
|
||||
|
||||
<section id = "kaufen" onclick = kaufen('User')><center><h1>Kaufen</h1></center></section>
|
||||
|
||||
<section id = "aktuelleAuktion">aktuelle Auktion</section>
|
||||
<section id = "naechsteAuktion">n<EFBFBD>chste Auktion</section>
|
||||
<section id = "letzteAuktion">letzte Auktion</section>
|
||||
|
||||
<section id = "simManager">
|
||||
<p><button id = "bot1Button" class = "botButtonInactiveStyle" onclick = botStart(1)>Bot 1</button></p>
|
||||
<p><button id = "bot2Button" class = "botButtonInactiveStyle" onclick = botStart(2)>Bot 2</button></p>
|
||||
<p><button class = "bigbutton" onclick = viewChargenubersicht()>Chargen-Manager</button></p>
|
||||
<p><button class = "bigbutton" onclick = viewLogfile()>Log-Files</button></p>
|
||||
</section>
|
||||
</div>
|
||||
<input type = "hidden" id = "los_nr" value = "-1">
|
||||
</body>
|
||||
</html>
|
47
Sammlung/Praktikum/3/ias_p2_b0.1/js/bot/bot.js
Normal file
47
Sammlung/Praktikum/3/ias_p2_b0.1/js/bot/bot.js
Normal file
@ -0,0 +1,47 @@
|
||||
var bot1ID = 0;
|
||||
var bot2ID = 0;
|
||||
|
||||
function randomizer(los_nr){
|
||||
return (Math.random() * (charge_data[los_nr]['startPreis'] - charge_data[los_nr]['minPreis']) + charge_data[los_nr]['minPreis']);
|
||||
};
|
||||
function buyBot(bot){
|
||||
los_nr = document.getElementById('los_nr').value;
|
||||
var bet = randomizer(los_nr);
|
||||
|
||||
if(charge_data[los_nr]['vkPreis'] < bet){
|
||||
setBotButtonStyle(bot, 'buyAction');
|
||||
var botname = 'Bot' + bot;
|
||||
kaufen(botname);
|
||||
|
||||
}
|
||||
};
|
||||
function botStart(bot){
|
||||
setBotButtonStyle(bot, 'active');
|
||||
|
||||
if(bot == 1){
|
||||
bot1ID = setInterval(function(){buyBot(1)}, 1000);
|
||||
}
|
||||
else if(bot == 2){
|
||||
bot2ID = setInterval(function(){buyBot(2)}, 1000);
|
||||
}
|
||||
else{
|
||||
alert("Fehler beim Aktivieren eines Bots");
|
||||
}
|
||||
|
||||
};
|
||||
function botStop(bot){
|
||||
setBotButtonStyle(bot, 'inactive');
|
||||
|
||||
if(bot == 1){
|
||||
clearInterval(bot1ID);
|
||||
bot1ID = 0;
|
||||
|
||||
}
|
||||
else if(bot == 2){
|
||||
clearInterval(bot2ID);
|
||||
bot2ID = 0;
|
||||
}
|
||||
else{
|
||||
alert("Fehler beim Aktivieren eines Bots");
|
||||
}
|
||||
};
|
56
Sammlung/Praktikum/3/ias_p2_b0.1/js/bot/botButtonStyle.js
Normal file
56
Sammlung/Praktikum/3/ias_p2_b0.1/js/bot/botButtonStyle.js
Normal file
@ -0,0 +1,56 @@
|
||||
function setBotButtonStyle(bot, style){
|
||||
var htmlID = 0;
|
||||
if(bot == 1){
|
||||
if(style == 'active'){
|
||||
document.getElementById('bot1Button').className = "botButtonActiveStyle";
|
||||
document.getElementById('bot1Button').onclick = function onclick(event){ botStop(1);};
|
||||
}
|
||||
else if(style == 'inactive'){
|
||||
document.getElementById('bot1Button').className = "botButtonInactiveStyle";
|
||||
document.getElementById('bot1Button').onclick = function onclick(event){ botStart(1);};
|
||||
}
|
||||
else if(style == 'buyAction'){
|
||||
document.getElementById('bot1Button').className = "botButtonBuyActionStyle";
|
||||
setTimeout(function(){ botButtonStyleCheck() }, 500);
|
||||
}
|
||||
else{
|
||||
alert("Fehler beim Stylen von Botbutton");
|
||||
}
|
||||
}
|
||||
|
||||
else if(bot == 2){
|
||||
if(style == 'active'){
|
||||
document.getElementById('bot2Button').className = "botButtonActiveStyle";
|
||||
document.getElementById('bot2Button').onclick = function onclick(event){ botStop(2);};
|
||||
}
|
||||
else if(style == 'inactive'){
|
||||
document.getElementById('bot2Button').className = "botButtonInactiveStyle";
|
||||
document.getElementById('bot2Button').onclick = function onclick(event){ botStart(2);};
|
||||
}
|
||||
else if(style == 'buyAction'){
|
||||
document.getElementById('bot2Button').className = "botButtonBuyActionStyle";
|
||||
setTimeout(function(){ botButtonStyleCheck() }, 500);
|
||||
}
|
||||
else{
|
||||
alert("Fehler beim Stylen von Botbutton");
|
||||
}
|
||||
}
|
||||
|
||||
else{
|
||||
alert("Fehler Auswahl eines Botbuttons f<>r Styling");
|
||||
}
|
||||
};
|
||||
function botButtonStyleCheck(){
|
||||
if(bot1ID != 0){
|
||||
setBotButtonStyle(1, 'active');
|
||||
}
|
||||
else{
|
||||
setBotButtonStyle(1, 'inactive');
|
||||
}
|
||||
if(bot2ID !=0){
|
||||
setBotButtonStyle(2, 'active');
|
||||
}
|
||||
else{
|
||||
setBotButtonStyle(2, 'inactive');
|
||||
}
|
||||
};
|
91
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/es.js
Normal file
91
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/es.js
Normal file
@ -0,0 +1,91 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Event-Service: asynchroner Nachrichtenaustausch
|
||||
//------------------------------------------------------------------------------
|
||||
// depends-on:
|
||||
// jquery
|
||||
// inheritance
|
||||
// underscore
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function defer_p (notifier_ppl, entry_opl, message_spl, data_opl) {
|
||||
return setTimeout(function() {
|
||||
return notifier_ppl.apply(entry_opl, [entry_opl, message_spl, data_opl]);
|
||||
}, 1);
|
||||
}
|
||||
|
||||
function each(object_opl, iterator, context) {
|
||||
for (var key in object_opl) {
|
||||
iterator.call(context, object_opl[key], key);
|
||||
}
|
||||
}
|
||||
|
||||
function findAll(object_opl, iterator, context) {
|
||||
var results = [];
|
||||
each(object_opl, function(value, index) {
|
||||
if (iterator.call(context, value, index))
|
||||
results.push(value);
|
||||
});
|
||||
return results;
|
||||
}
|
||||
|
||||
function compact(object_opl) {
|
||||
return findAll(object_opl, function(value) {
|
||||
return value != null;
|
||||
});
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
var EventService_cl = Class.create({
|
||||
//------------------------------------------------------------------------------
|
||||
initialize: function () {
|
||||
this.Data_o = null;
|
||||
this.Subscriber_o = {};
|
||||
this.Method_o = null;
|
||||
},
|
||||
subscribe_px: function (Subscriber_opl, Message_spl) {
|
||||
if (Message_spl in this.Subscriber_o) {
|
||||
// Message bekannt, Liste der Subscriber untersuchen
|
||||
if (this.Subscriber_o[Message_spl].indexOf(Subscriber_opl) == -1) {
|
||||
this.Subscriber_o[Message_spl].push(Subscriber_opl);
|
||||
}
|
||||
} else {
|
||||
// Message noch nicht vorhanden, neu eintragen
|
||||
this.Subscriber_o[Message_spl] = [Subscriber_opl];
|
||||
}
|
||||
},
|
||||
unSubscribe_px: function (Subscriber_opl, Message_spl) {
|
||||
if (Message_spl in this.Subscriber_o) {
|
||||
// Message bekannt, Liste der Subscriber untersuchen
|
||||
var Entry_a = this.Subscriber_o[Message_spl];
|
||||
var index_i = Entry_a.indexOf(Subscriber_opl);
|
||||
if (index_i >= 0) {
|
||||
// Eintrag entfernen
|
||||
Entry_a[index_i] = null;
|
||||
Entry_a = compact(Entry_a); // compact liefert Kopie!
|
||||
if (Entry_a.length == 0) {
|
||||
// keine Subscriber mehr, kann entfernt werden
|
||||
delete this.Subscriber_o[Message_spl];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Message nicht vorhanden, falsche Anforderung
|
||||
}
|
||||
},
|
||||
publish_px: function (Message_spl, Data_opl) {
|
||||
console.info('es - publish ' + Message_spl);
|
||||
each(this.Subscriber_o, function (value_apl, key_spl) {
|
||||
// geliefert wird jeweils ein Wert, hier ein Array, und der Key
|
||||
if (key_spl == Message_spl) {
|
||||
// an alle Subscriber weitergeben
|
||||
each(value_apl, function (entry_opl, index_ipl) {
|
||||
// geliefert wird hier das Element und der Index
|
||||
//_.defer(entry_opl.notify_px, entry_opl, Message_spl, Data_opl);
|
||||
defer_p(entry_opl.notify_px, entry_opl, Message_spl, Data_opl);
|
||||
}, this
|
||||
);
|
||||
}
|
||||
}, this
|
||||
)
|
||||
}
|
||||
});
|
||||
// EOF
|
122
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/inheritance.js
Normal file
122
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/inheritance.js
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
Class, version 2.7
|
||||
Copyright (c) 2006, 2007, 2008, Alex Arnell <alex@twologic.com>
|
||||
Licensed under the new BSD License. See end of file for full license terms.
|
||||
*/
|
||||
|
||||
var Class = (function() {
|
||||
var __extending = {};
|
||||
|
||||
return {
|
||||
extend: function(parent, def) {
|
||||
if (arguments.length == 1) { def = parent; parent = null; }
|
||||
var func = function() {
|
||||
if (arguments[0] == __extending) { return; }
|
||||
this.initialize.apply(this, arguments);
|
||||
};
|
||||
if (typeof(parent) == 'function') {
|
||||
func.prototype = new parent( __extending);
|
||||
}
|
||||
var mixins = [];
|
||||
if (def && def.include) {
|
||||
if (def.include.reverse) {
|
||||
// methods defined in later mixins should override prior
|
||||
mixins = mixins.concat(def.include.reverse());
|
||||
} else {
|
||||
mixins.push(def.include);
|
||||
}
|
||||
delete def.include; // clean syntax sugar
|
||||
}
|
||||
if (def) Class.inherit(func.prototype, def);
|
||||
for (var i = 0; (mixin = mixins[i]); i++) {
|
||||
Class.mixin(func.prototype, mixin);
|
||||
}
|
||||
return func;
|
||||
},
|
||||
mixin: function (dest, src, clobber) {
|
||||
clobber = clobber || false;
|
||||
if (typeof(src) != 'undefined' && src !== null) {
|
||||
for (var prop in src) {
|
||||
if (clobber || (!dest[prop] && typeof(src[prop]) == 'function')) {
|
||||
dest[prop] = src[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
return dest;
|
||||
},
|
||||
inherit: function(dest, src, fname) {
|
||||
if (arguments.length == 3) {
|
||||
var ancestor = dest[fname], descendent = src[fname], method = descendent;
|
||||
descendent = function() {
|
||||
var ref = this.parent; this.parent = ancestor;
|
||||
var result = method.apply(this, arguments);
|
||||
ref ? this.parent = ref : delete this.parent;
|
||||
return result;
|
||||
};
|
||||
// mask the underlying method
|
||||
descendent.valueOf = function() { return method; };
|
||||
descendent.toString = function() { return method.toString(); };
|
||||
dest[fname] = descendent;
|
||||
} else {
|
||||
for (var prop in src) {
|
||||
if (dest[prop] && typeof(src[prop]) == 'function') {
|
||||
Class.inherit(dest, src, prop);
|
||||
} else {
|
||||
dest[prop] = src[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
return dest;
|
||||
},
|
||||
singleton: function() {
|
||||
var args = arguments;
|
||||
if (args.length == 2 && args[0].getInstance) {
|
||||
var klass = args[0].getInstance(__extending);
|
||||
// we're extending a singleton swap it out for it's class
|
||||
if (klass) { args[0] = klass; }
|
||||
}
|
||||
|
||||
return (function(args){
|
||||
// store instance and class in private variables
|
||||
var instance = false;
|
||||
var klass = Class.extend.apply(args.callee, args);
|
||||
return {
|
||||
getInstance: function () {
|
||||
if (arguments[0] == __extending) return klass;
|
||||
if (instance) return instance;
|
||||
return (instance = new klass());
|
||||
}
|
||||
};
|
||||
})(args);
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
// finally remap Class.create for backward compatability with prototype
|
||||
Class.create = function() {
|
||||
return Class.extend.apply(this, arguments);
|
||||
};
|
||||
|
||||
/*
|
||||
Redistribution and use in source and binary forms, with or without modification, are
|
||||
permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list
|
||||
of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
* Neither the name of typicalnoise.com nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
9597
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/jquery-1.9.1.js
vendored
Normal file
9597
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/jquery-1.9.1.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
308
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/te.js
Normal file
308
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/te.js
Normal file
@ -0,0 +1,308 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Template-Engine
|
||||
//------------------------------------------------------------------------------
|
||||
// depends-on:
|
||||
// inheritance
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// String-Methoden ergänzen
|
||||
|
||||
APPCO = {};
|
||||
|
||||
APPCO.apply = function(o, c, defaults){
|
||||
// no "this" reference for friendly out of scope calls
|
||||
if (defaults) {
|
||||
APPCO.apply(o, defaults);
|
||||
}
|
||||
if (o && c && typeof c == 'object') {
|
||||
for (var p in c) {
|
||||
o[p] = c[p];
|
||||
}
|
||||
}
|
||||
return o;
|
||||
};
|
||||
|
||||
// quick and dirty! Manche Autoren lehnen solche Erweiterungen ab
|
||||
|
||||
APPCO.apply(String.prototype, {
|
||||
include: function (pattern) {
|
||||
return this.indexOf(pattern) > -1;
|
||||
},
|
||||
startsWith: function (pattern) {
|
||||
return this.lastIndexOf(pattern, 0) === 0;
|
||||
},
|
||||
endsWith: function (pattern) {
|
||||
var d = this.length - pattern.length;
|
||||
return d >= 0 && this.indexOf(pattern, d) === d;
|
||||
}
|
||||
});
|
||||
|
||||
APPCO.apply(String, {
|
||||
interpret: function(value) {
|
||||
return value == null ? '' : String(value);
|
||||
}
|
||||
});
|
||||
|
||||
// Namensraum
|
||||
|
||||
var TELIB = {};
|
||||
|
||||
TELIB.Generator_cl = Class.create({
|
||||
initialize: function () {
|
||||
this.reset_px();
|
||||
},
|
||||
reset_px: function () {
|
||||
this.code_a = ['var result_a = [];\n'];
|
||||
},
|
||||
write_px: function (text_spl) {
|
||||
// Escape-Zeichen bei Strings ergänzen
|
||||
var text_s = text_spl.replace(/"/g, '\\"');
|
||||
text_s = text_s.replace(/'/g, "\\'");
|
||||
this.code_a.push('result_a.push("' + text_s + '");\n');
|
||||
},
|
||||
code_px: function (code_spl) {
|
||||
if (code_spl.startsWith('if')) {
|
||||
this.code_a.push('if (' + code_spl.substr(2) + ') {\n');
|
||||
} else if (code_spl.startsWith('else')) {
|
||||
this.code_a.push('} else {\n');
|
||||
} else if (code_spl.startsWith('endif')) {
|
||||
this.code_a.push('}\n');
|
||||
} else if (code_spl.startsWith('for')) {
|
||||
this.code_a.push('for (' + code_spl.substr(3) + ') {\n');
|
||||
} else if (code_spl.startsWith('endfor')) {
|
||||
this.code_a.push('}\n');
|
||||
} else {
|
||||
this.code_a.push(code_spl + '\n');
|
||||
}
|
||||
},
|
||||
substitute_px: function (subst_spl) {
|
||||
this.code_a.push('result_a.push(' + String.interpret(subst_spl) + ');\n');
|
||||
},
|
||||
generate_px: function () {
|
||||
var result_s = this.code_a.join('') + ' return result_a.join("");';
|
||||
var f_o = new Function ('context', result_s);
|
||||
return f_o;
|
||||
}
|
||||
});
|
||||
|
||||
TELIB.TemplateCompiler_cl = Class.create({
|
||||
initialize: function () {
|
||||
this.gen_o = new TELIB.Generator_cl();
|
||||
this.reset_px();
|
||||
},
|
||||
reset_px: function () {
|
||||
this.gen_o.reset_px();
|
||||
this.preservePreWS_b = false;
|
||||
this.preservePostWS_b = false;
|
||||
},
|
||||
setPreWS_px: function (on_bpl) {
|
||||
if ((on_bpl == undefined) || (on_bpl == false)) {
|
||||
this.preservePreWS_b = false;
|
||||
} else {
|
||||
this.preservePreWS_b = true;
|
||||
}
|
||||
},
|
||||
setPostWS_px: function (on_bpl) {
|
||||
if ((on_bpl == undefined) || (on_bpl == false)) {
|
||||
this.preservePostWS_b = false;
|
||||
} else {
|
||||
this.preservePostWS_b = true;
|
||||
}
|
||||
},
|
||||
compile_px: function (source_spl) {
|
||||
var state_i = 0;
|
||||
var pos_i = 0;
|
||||
var len_i = source_spl.length;
|
||||
var text_s = '';
|
||||
var code_s = '';
|
||||
var subst_s = '';
|
||||
this.gen_o.reset_px();
|
||||
|
||||
var doubletest_f = function (char_spl) {
|
||||
var status_b = false;
|
||||
if ((pos_i + 1) < len_i) {
|
||||
if ((source_spl[pos_i] == char_spl) && (source_spl[pos_i+1] == char_spl)) {
|
||||
status_b = true;
|
||||
}
|
||||
}
|
||||
return status_b;
|
||||
}
|
||||
|
||||
while (pos_i < len_i) {
|
||||
switch (state_i) {
|
||||
case 0:
|
||||
// outside
|
||||
if (source_spl[pos_i] == '@') { // ECMA 5!
|
||||
if (doubletest_f('@') == false) {
|
||||
state_i = 2;
|
||||
code_s = '';
|
||||
} else {
|
||||
// als normales Zeichen verarbeiten, ein Zeichen überlesen
|
||||
state_i = 1;
|
||||
text_s = '@';
|
||||
pos_i++;
|
||||
}
|
||||
} else if (source_spl[pos_i] == '#') {
|
||||
if (doubletest_f('#') == false) {
|
||||
state_i = 3;
|
||||
subst_s = '';
|
||||
} else {
|
||||
// als normales Zeichen verarbeiten, ein Zeichen überlesen
|
||||
state_i = 1;
|
||||
text_s = '#';
|
||||
pos_i++;
|
||||
}
|
||||
} else if ((source_spl[pos_i] == ' ') || (source_spl[pos_i] == '\t')) {
|
||||
state_i = 4;
|
||||
text_s = '';
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
} else {
|
||||
state_i = 1;
|
||||
text_s = '';
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// inText
|
||||
if (source_spl[pos_i] == '@') {
|
||||
if (doubletest_f('@') == false) {
|
||||
// Textende, neuer Code
|
||||
state_i = 0;
|
||||
this.gen_o.write_px(text_s);
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
} else {
|
||||
// als normales Zeichen verarbeiten, ein Zeichen überlesen
|
||||
text_s += '@';
|
||||
pos_i++;
|
||||
}
|
||||
} else if (source_spl[pos_i] == '#') {
|
||||
if (doubletest_f('#') == false) {
|
||||
// Textende, neue Substitution
|
||||
state_i = 0;
|
||||
this.gen_o.write_px(text_s);
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
// Textende, neuer Code
|
||||
} else {
|
||||
// als normales Zeichen verarbeiten, ein Zeichen überlesen
|
||||
text_s += '#';
|
||||
pos_i++;
|
||||
}
|
||||
} else if ((source_spl[pos_i] == ' ') || (source_spl[pos_i] == '\t')) {
|
||||
// Textende
|
||||
state_i = 0;
|
||||
this.gen_o.write_px(text_s);
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
} else {
|
||||
// sammeln
|
||||
if ((source_spl[pos_i] != '\n') && (source_spl[pos_i] != '\r')) {
|
||||
text_s += source_spl[pos_i];
|
||||
} else if (source_spl[pos_i] == '\n') {
|
||||
text_s += '\\n';
|
||||
} else {
|
||||
text_s += '\\r';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// inCode
|
||||
if (source_spl[pos_i] == '@') {
|
||||
if (doubletest_f('@') == false) {
|
||||
// zu Ende, erzeugen
|
||||
this.gen_o.code_px(code_s);
|
||||
state_i = 5; //0
|
||||
} else {
|
||||
// als normales Zeichen verarbeiten, ein Zeichen überlesen
|
||||
code_s += '@';
|
||||
pos_i++;
|
||||
}
|
||||
} else {
|
||||
// sammeln
|
||||
code_s += source_spl[pos_i];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// inSubst
|
||||
// Verdopplung # hier nicht zulässig!
|
||||
if (source_spl[pos_i] == '#') {
|
||||
// zu Ende, erzeugen
|
||||
this.gen_o.substitute_px(subst_s);
|
||||
state_i = 0;
|
||||
} else {
|
||||
// sammeln
|
||||
subst_s += source_spl[pos_i];
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// pre-code-whitespace
|
||||
switch (source_spl[pos_i]) {
|
||||
case ' ':
|
||||
case '\t':
|
||||
// sammeln
|
||||
text_s += source_spl[pos_i];
|
||||
break;
|
||||
default:
|
||||
state_i = 0;
|
||||
if (source_spl[pos_i] != '@') {
|
||||
this.gen_o.write_px(text_s);
|
||||
} else {
|
||||
if (doubletest_f('@') == false) {
|
||||
// Whitespace vor Code-Beginn erkannt
|
||||
if (this.preservePreWS_b == true) {
|
||||
// trotzdem ausgeben
|
||||
this.gen_o.write_px(text_s);
|
||||
}
|
||||
} // ansonsten wie normales Zeichen behandeln
|
||||
}
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
// post-code-whitespace
|
||||
switch (source_spl[pos_i]) {
|
||||
case '\n':
|
||||
text_s += '\\n';
|
||||
state_i = 0;
|
||||
break;
|
||||
case '\r':
|
||||
text_s += '\\r';
|
||||
state_i = 0;
|
||||
break;
|
||||
case ' ':
|
||||
case '\t':
|
||||
// ggf. sammeln
|
||||
text_s += source_spl[pos_i];
|
||||
break;
|
||||
default:
|
||||
// Whitespace nach Code erkannt
|
||||
if (this.preservePostWS_b == true) {
|
||||
// trotzdem ausgeben
|
||||
this.gen_o.write_px(text_s);
|
||||
}
|
||||
state_i = 0;
|
||||
pos_i--; // Zeichen erneut verarbeiten
|
||||
}
|
||||
break;
|
||||
}
|
||||
pos_i++;
|
||||
}
|
||||
// welcher Zustand liegt abschließend vor?
|
||||
if (state_i == 1) {
|
||||
this.gen_o.write_px(text_s);
|
||||
} else if (state_i == 2) {
|
||||
this.gen_o.code_px(code_s);
|
||||
} else if (state_i == 3) {
|
||||
this.gen_o.substitute_px(subst_s);
|
||||
} else if (state_i == 4) {
|
||||
if (this.preservePreWS_b == true) {
|
||||
this.gen_o.write_px(text_s);
|
||||
}
|
||||
} else if (state_i == 5) {
|
||||
if (this.preservePostWS_b == true) {
|
||||
this.gen_o.write_px(text_s);
|
||||
}
|
||||
}
|
||||
|
||||
return this.gen_o.generate_px();
|
||||
}
|
||||
});
|
||||
// EOF
|
61
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/tm.js
Normal file
61
Sammlung/Praktikum/3/ias_p2_b0.1/js/import/tm.js
Normal file
@ -0,0 +1,61 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Template-Manager
|
||||
// - Laden und Bereitstellen von Template-Quellen oder anderen Textquellen
|
||||
//------------------------------------------------------------------------------
|
||||
// depends-on:
|
||||
// jquery
|
||||
// inheritance
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Namensraum TELIB verwenden
|
||||
|
||||
TELIB.TemplateManager_cl = Class.create({
|
||||
initialize: function () {
|
||||
this.templates_o = {};
|
||||
this.compiled_o = {};
|
||||
this.teCompiler_o = new TELIB.TemplateCompiler_cl();
|
||||
// Templates als Ressource anfordern und speichern
|
||||
var path_s = "/template/";
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: path_s,
|
||||
type: 'GET',
|
||||
context: this
|
||||
})
|
||||
.done(function (data_opl) {
|
||||
this.templates_o = data_opl['templates'];
|
||||
// Benachrichtigung senden
|
||||
//+++ Bezeichnung Namensraum korrigieren
|
||||
//SHOP.eventService.publish_px('app', ['artikelliste', null]);
|
||||
})
|
||||
.fail(function(jqXHR_opl, textStatus_spl) {
|
||||
alert( "[TELIB.tm] Fehler bei Anforderung: " + textStatus_spl );
|
||||
});
|
||||
},
|
||||
get_px: function (name_spl) {
|
||||
if (name_spl in this.templates_o) {
|
||||
return this.templates_o[name_spl];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
execute_px: function (name_spl, data_opl) {
|
||||
var compiled_o = null;
|
||||
if (name_spl in this.compiled_o) {
|
||||
compiled_o = this.compiled_o[name_spl];
|
||||
} else {
|
||||
// Übersetzen und ausführen
|
||||
if (name_spl in this.templates_o) {
|
||||
this.teCompiler_o.reset_px();
|
||||
compiled_o = this.teCompiler_o.compile_px(this.templates_o[name_spl]);
|
||||
this.compiled_o[name_spl] = compiled_o;
|
||||
}
|
||||
}
|
||||
if (compiled_o != null) {
|
||||
return compiled_o(data_opl);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
});
|
||||
// EOF
|
37
Sammlung/Praktikum/3/ias_p2_b0.1/js/kaufen.js
Normal file
37
Sammlung/Praktikum/3/ias_p2_b0.1/js/kaufen.js
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
function startNaechsteAuktion(los_nr){
|
||||
clearInterval(interval_id);
|
||||
los_nr++;
|
||||
if(los_nr <= charge_data['info']['anzAuk']){
|
||||
document.getElementById('los_nr').value = los_nr;
|
||||
los(los_nr);
|
||||
}
|
||||
else{
|
||||
viewLetzteAuktion(los_nr);
|
||||
viewAktuelleAuktion(los_nr);
|
||||
viewCanvasData(los_nr);
|
||||
|
||||
document.getElementById('los_nr').value == -1;
|
||||
charge();
|
||||
}
|
||||
};
|
||||
|
||||
function runden2Nachkomma(zahl){
|
||||
Ergebnis = Math.round(zahl *100) / 100;
|
||||
return Ergebnis;
|
||||
};
|
||||
|
||||
function calcVkPreis(los_nr){
|
||||
tmp = charge_data[los_nr]['startPreis']
|
||||
- (((charge_data[los_nr]['startPreis'] - charge_data[los_nr]['minPreis'])
|
||||
/ charge_data[los_nr]['auktionDauer'])
|
||||
* charge_data[los_nr]['auktionLaufzeit']);
|
||||
|
||||
charge_data[los_nr]['vkPreis'] = runden2Nachkomma(tmp);
|
||||
};
|
||||
|
||||
function kaufen(buyguy){
|
||||
los_nr = document.getElementById('los_nr').value;
|
||||
startNaechsteAuktion(los_nr);
|
||||
sendLog(buyguy, los_nr);
|
||||
};
|
46
Sammlung/Praktikum/3/ias_p2_b0.1/js/main.js
Normal file
46
Sammlung/Praktikum/3/ias_p2_b0.1/js/main.js
Normal file
@ -0,0 +1,46 @@
|
||||
var interval_id;
|
||||
var charge_data = {};
|
||||
var TPL = {};
|
||||
|
||||
function auktion(los_nr){
|
||||
if(charge_data[los_nr]['auktionLaufzeit'] <= charge_data[los_nr]['auktionDauer']){
|
||||
|
||||
viewCanvasData(los_nr);
|
||||
|
||||
calcVkPreis(los_nr);
|
||||
viewAktuelleAuktion(los_nr);
|
||||
viewNaechsteAuktion(los_nr);
|
||||
viewLetzteAuktion(los_nr);
|
||||
|
||||
charge_data[los_nr]['auktionLaufzeit']++;
|
||||
}
|
||||
};
|
||||
|
||||
function los(los_nr){
|
||||
calcVkPreis(los_nr);
|
||||
viewLetzteAuktion(los_nr);
|
||||
viewNaechsteAuktion(los_nr);
|
||||
viewAktuelleAuktion(los_nr);
|
||||
|
||||
|
||||
interval_id = setInterval( function() {auktion(los_nr)}, 1000);
|
||||
};
|
||||
|
||||
function charge(){
|
||||
// if( Number(document.getElementById('los_nr').value) == -1){
|
||||
// alert("neu");
|
||||
neueCharge();
|
||||
// }
|
||||
// else{
|
||||
// alert("gebr");
|
||||
// los(document.getElementById('los_nr').value);
|
||||
// }
|
||||
|
||||
};
|
||||
|
||||
$(document).ready(
|
||||
function(){
|
||||
TPL.engine = new TELIB.TemplateManager_cl();
|
||||
charge();
|
||||
}
|
||||
);
|
@ -0,0 +1,16 @@
|
||||
function neueCharge(){
|
||||
/*der Server stellt die n<>chste Charge zur Verf<72>gung*/
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: '/chargen',
|
||||
type: 'NEXT'
|
||||
})
|
||||
.done(function(newCharge){
|
||||
charge_data = eval("(" + newCharge + ")");
|
||||
los('1');
|
||||
document.getElementById('los_nr').value = 1;
|
||||
})
|
||||
.fail(function(error){
|
||||
alert("R<>ckgabe von NEXT fehlerhaft");
|
||||
});
|
||||
};
|
30
Sammlung/Praktikum/3/ias_p2_b0.1/js/transfer/log.js
Normal file
30
Sammlung/Praktikum/3/ias_p2_b0.1/js/transfer/log.js
Normal file
@ -0,0 +1,30 @@
|
||||
function sendLog(buyguy, los_nr){
|
||||
|
||||
/*var log = '{' +
|
||||
'buyer: ' + buyguy + ', ' +
|
||||
'charge: ' + charge_data['info']['name'] + ', ' +
|
||||
'los: ' + los_nr + ', ' +
|
||||
'preis: ' + charge_data[los_nr]['vkPreis']
|
||||
+ '}';*/
|
||||
/*var log = {};
|
||||
log['buyer'] = buyguy;
|
||||
log['charge'] = charge_data['info']['name'];
|
||||
log['los'] = los_nr;
|
||||
log['preis'] = charge_data[los_nr]['vkPreis'];*/
|
||||
|
||||
var path = "/log";
|
||||
path += '/' + buyguy;
|
||||
path += '/' + charge_data['info']['name'];
|
||||
path += '/' + los_nr;
|
||||
path += '/' + charge_data[los_nr]['vkPreis'];
|
||||
|
||||
$.ajax({
|
||||
// url: "/log",
|
||||
url: path,
|
||||
type: 'SEND'//,
|
||||
// data: gelogen
|
||||
})
|
||||
.fail(function(){
|
||||
alert("Übertragung des Logeintrags fehlgeschlagen");
|
||||
});
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
function loadLosData(){};
|
||||
function sendChargendata(chargendata, neu){
|
||||
var path = '/manager/' + chargendata + '/' + neu;
|
||||
$.ajax({
|
||||
url: path,
|
||||
type: 'RECEIVE',
|
||||
})
|
||||
.fail(function(){
|
||||
alert("Chargendaten konnten nicht an den Server <20>bertragen werden");
|
||||
});
|
||||
};
|
54
Sammlung/Praktikum/3/ias_p2_b0.1/js/view/viewAuktion.js
Normal file
54
Sammlung/Praktikum/3/ias_p2_b0.1/js/view/viewAuktion.js
Normal file
@ -0,0 +1,54 @@
|
||||
//ajax krempel hier hin pasten von main.js
|
||||
|
||||
function viewLetzteAuktion(los_nr){
|
||||
try{
|
||||
var markup = '<p>' + charge_data[(Number(los_nr) - 1)]['beschreibung'] + '</p>' +
|
||||
'<p>verkauft f<>r: ' + charge_data[(Number(los_nr) - 1)]['vkPreis'] + '</p>';
|
||||
|
||||
$('#letzteAuktion').html(markup);
|
||||
}
|
||||
catch(e){
|
||||
$('#letzteAuktion').html('<p>keine Auktion beendet</p>');
|
||||
}
|
||||
};
|
||||
|
||||
function viewNaechsteAuktion(los_nr){
|
||||
try{
|
||||
var markup = '<p>' + charge_data[(Number(los_nr) + 1)]['beschreibung'] + '</p>' +
|
||||
'<p>Startpreis: ' + charge_data[(Number(los_nr) + 1)]['startPreis'] + '</p>';
|
||||
|
||||
$('#naechsteAuktion').html(markup);
|
||||
}
|
||||
catch(e){
|
||||
$('#naechsteAuktion').html('<p>letzte Auktion l<>uft bereits!</p>');
|
||||
}
|
||||
};
|
||||
|
||||
function viewAktuelleAuktion(los_nr){
|
||||
try{
|
||||
var markup = '<p>' + charge_data[los_nr]['beschreibung'] + '</p>' +
|
||||
'<p>aktueller Preis: ' + charge_data[los_nr]['vkPreis'] + '</p>';
|
||||
|
||||
$('#aktuelleAuktion').html(markup);
|
||||
}
|
||||
catch(e){
|
||||
$('#aktuelleAuktion').html('<p>aktuell keine Auktionen eingestellt</p>');
|
||||
}
|
||||
};
|
||||
|
||||
function viewCanvasData(los_nr){
|
||||
try{
|
||||
renderCanvas((charge_data[los_nr]['auktionDauer'] - charge_data[los_nr]['auktionLaufzeit']),(((charge_data[los_nr]['auktionDauer'] - charge_data[los_nr]['auktionLaufzeit']) / charge_data[los_nr]['auktionDauer']) * 360));
|
||||
}
|
||||
catch(e){
|
||||
$('#canvas').html('<p>aktuell keine Auktionen eingestellt</p>');
|
||||
}
|
||||
}
|
||||
function viewAuktionen(){
|
||||
$.get('templates/html/auktionsansicht.html', function(markup){
|
||||
$('#content').html(markup);
|
||||
})
|
||||
|
||||
var los_nr = document.getElementById('los_nr').value;
|
||||
los(los_nr);
|
||||
};
|
96
Sammlung/Praktikum/3/ias_p2_b0.1/js/view/viewCanvas.js
Normal file
96
Sammlung/Praktikum/3/ias_p2_b0.1/js/view/viewCanvas.js
Normal file
@ -0,0 +1,96 @@
|
||||
function deg2Rad(degree){
|
||||
var factor = Math.PI/180;
|
||||
return degree * factor;
|
||||
};
|
||||
|
||||
function degreeConverter(degree){
|
||||
if(degree > 0){
|
||||
degree--;
|
||||
}
|
||||
else{
|
||||
degree = 1;
|
||||
}
|
||||
return degree;
|
||||
};
|
||||
|
||||
function color8Tor(requestType, degree){
|
||||
switch(requestType){
|
||||
case 'strokeStyle':
|
||||
if(degree > 180){
|
||||
return 'green';
|
||||
}
|
||||
if(degree <= 181 && degree > 120){
|
||||
return 'yellow';
|
||||
}
|
||||
if(degree <= 121 && degree > 37){
|
||||
return 'orange';
|
||||
}
|
||||
if(degree <= 36){
|
||||
return 'red';
|
||||
}
|
||||
break;
|
||||
case 'shadowColor':
|
||||
if(degree > 180){
|
||||
return 'lightgreen';
|
||||
}
|
||||
if(degree <= 181 && degree > 120){
|
||||
return 'blue';
|
||||
}
|
||||
if(degree <= 121 && degree > 60){
|
||||
return 'orange';
|
||||
}
|
||||
if(degree <= 61){
|
||||
return 'red';
|
||||
}
|
||||
break;
|
||||
case 'fillStyle':
|
||||
if(degree > 180){
|
||||
return 'green';
|
||||
}
|
||||
if(degree <= 181 && degree > 120){
|
||||
return 'yellow';
|
||||
}
|
||||
if(degree <= 121 && degree > 37){
|
||||
return 'orange';
|
||||
}
|
||||
if(degree <= 36){
|
||||
return 'red';
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
function renderCanvas(countDown, degree){
|
||||
var canvas = document.getElementById('canvas');
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
//ctx.strokeStyle = 'green';
|
||||
ctx.strokeStyle = color8Tor('strokeStyle', degree);
|
||||
ctx.lineWidth = 17;
|
||||
ctx.lineCap = 'round';
|
||||
ctx.shadowBlur = 15;
|
||||
//ctx.shadowColor = 'lightgreen';
|
||||
ctx.shadowColor = color8Tor('shadowColor', degree);
|
||||
|
||||
|
||||
|
||||
gradient = ctx.createRadialGradient(150, 150, 5, 150, 150, 100);
|
||||
gradient.addColorStop(0, 'lightblue');
|
||||
gradient.addColorStop(1, 'white');
|
||||
ctx.fillStyle = gradient;
|
||||
|
||||
|
||||
ctx.fillRect(0, 0, 300, 300);
|
||||
|
||||
ctx.beginPath();
|
||||
|
||||
degree = degreeConverter(degree);
|
||||
ctx.arc(150, 150, 100, deg2Rad(270), deg2Rad(degree - 90));
|
||||
|
||||
ctx.stroke();
|
||||
|
||||
ctx.font = "30px Arial";
|
||||
//ctx.fillStyle = 'green';
|
||||
ctx.fillStyle = color8Tor('fillStyle', degree);
|
||||
ctx.fillText(countDown, 145, 160);
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
function viewChargenubersicht(){
|
||||
clearInterval(interval_id);
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: '/manager',
|
||||
type: 'LIST'
|
||||
})
|
||||
.done(function(liste){
|
||||
markup = TPL.engine.execute_px('chargenubersicht.tpl', liste);
|
||||
$("#content").html(markup);
|
||||
$('#content').append('<p><button class = "bigbutton" onclick = viewAuktionen()>zurück</button><button class = "wizardButtonNeu"onclick = wizardStart()>NEU</button></p>');
|
||||
})
|
||||
.fail(function(){
|
||||
alert("Chargenliste konnte nicht geladen werden");
|
||||
});
|
||||
}
|
||||
|
||||
function viewLosData(chargenNr, losNr){
|
||||
|
||||
}
|
16
Sammlung/Praktikum/3/ias_p2_b0.1/js/view/viewLog.js
Normal file
16
Sammlung/Praktikum/3/ias_p2_b0.1/js/view/viewLog.js
Normal file
@ -0,0 +1,16 @@
|
||||
function viewLogfile(){
|
||||
clearInterval(interval_id);
|
||||
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: '/log',
|
||||
type: 'REQ'
|
||||
})
|
||||
.done(function(log){
|
||||
var markup = TPL.engine.execute_px('log.tpl', log);
|
||||
$('#content').html(markup);
|
||||
})
|
||||
.fail(function(){});
|
||||
var markup = '<h1>Logfile</h1><p><button onclick = viewAuktionen()>zur<75>ck</button></p>';
|
||||
$('#content').append(markup);
|
||||
}
|
132
Sammlung/Praktikum/3/ias_p2_b0.1/js/wizard.js
Normal file
132
Sammlung/Praktikum/3/ias_p2_b0.1/js/wizard.js
Normal file
@ -0,0 +1,132 @@
|
||||
var wizardData = {};
|
||||
function wizardDelete(nr){
|
||||
var path = '/manager/' + nr;
|
||||
$.ajax({
|
||||
url: path,
|
||||
type: 'DELETE'
|
||||
})
|
||||
.done(function(){
|
||||
viewChargenubersicht();
|
||||
})
|
||||
.fail(function(){
|
||||
alert("Charge konnte nicht gel<65>scht werden");
|
||||
});
|
||||
|
||||
};
|
||||
function wizardSend(){
|
||||
//wizardData -> ajax -> server -> fuckoff
|
||||
var path = '/manager/' + JSON.stringify(wizardData);
|
||||
|
||||
$.ajax({
|
||||
url: path,
|
||||
type: 'RECEIVE'
|
||||
})
|
||||
.done(function(){
|
||||
viewChargenubersicht();
|
||||
})
|
||||
.fail(function(){
|
||||
alert("die <20>bertragung der Chargendaten zum Server ist fehlgeschlagen");
|
||||
});
|
||||
};
|
||||
function wizardLosDataSave(los_nr, next_los_nr){
|
||||
wizardData[los_nr]['beschreibung'] = document.getElementById('beschreibung').value;
|
||||
wizardData[los_nr]['anzGebinde'] = parseInt(document.getElementById('anzGebinde').value);
|
||||
wizardData[los_nr]['auktionDauer'] = parseInt(document.getElementById('auktionDauer').value);
|
||||
wizardData[los_nr]['auktionLaufzeit'] = 0;
|
||||
wizardData[los_nr]['startPreis'] = parseInt(document.getElementById('startPreis').value);
|
||||
wizardData[los_nr]['minPreis'] = parseInt(document.getElementById('minPreis').value);
|
||||
wizardData[los_nr]['auktionPreis'] = -1;
|
||||
wizardData[los_nr]['vkPreis'] = -1;
|
||||
|
||||
if(next_los_nr == 0){
|
||||
wizardSend();
|
||||
}
|
||||
else if(next_los_nr > wizardData['info']['anzAuk']){
|
||||
wizardLosData(next_los_nr, 1);
|
||||
}
|
||||
else{
|
||||
wizardLosData(next_los_nr, 0);
|
||||
}
|
||||
};
|
||||
function wizardLosData(los_nr, neu){
|
||||
$('#content').html('<h1>Los ' + los_nr + '</h1>');
|
||||
if(neu){
|
||||
wizardData['info']['anzAuk']++;
|
||||
wizardData[los_nr] = {};
|
||||
|
||||
$.get('templates/html/losLeerForm.html', function(markup){
|
||||
$('#content').append(markup);
|
||||
if(los_nr > 9){
|
||||
$('#content').append('<button class = "bigbutton" onclick = wizardLosDataSave('+los_nr+','+(los_nr - 1)+') >zur<75>ck</button><button class = "wizardButtonFertig" onclick = wizardLosDataSave('+los_nr+',' +0+ ')>Fertig</button>');
|
||||
}
|
||||
else if(los_nr == 1){
|
||||
$('#content').append('<button class = "bigbutton" onclick = wizardChargenname(0) >zur<75>ck</button><button class = "wizardButtonFertig" onclick = wizardLosDataSave('+los_nr+',' +0+ ')>Fertig</button><button class = "wizardButtonNeu" onclick = wizardLosDataSave('+los_nr+','+(los_nr + 1)+')>neu</button>');
|
||||
}
|
||||
else{
|
||||
$('#content').append('<button class = "bigbutton" onclick = wizardLosDataSave('+los_nr+','+(los_nr - 1)+') >zur<75>ck</button><button class = "wizardButtonFertig" onclick = wizardLosDataSave('+los_nr+',' +0+ ')>Fertig</button><button class = "wizardButtonNeu" onclick = wizardLosDataSave('+los_nr+','+(los_nr + 1)+')>neu</button>');
|
||||
}
|
||||
})
|
||||
}
|
||||
else{
|
||||
markup = TPL.engine.execute_px('losFilledForm.tpl',wizardData[los_nr]);
|
||||
$('#content').append(markup);
|
||||
if(los_nr > 9){
|
||||
$('#content').append('<button class = "bigbutton" onclick = wizardLosDataSave('+los_nr+','+(los_nr - 1)+') >zur<75>ck</button><button class = "wizardButtonFertig" onclick = wizardLosDataSave('+los_nr+',' +0+ ')>Fertig</button>');
|
||||
}
|
||||
else if(los_nr == 1){
|
||||
$('#content').append('<button class = "bigbutton" onclick = wizardChargenname(0) >zur<75>ck</button><button class = "wizardButtonFertig" onclick = wizardLosDataSave('+los_nr+',' +0+ ')>Fertig</button><button class = "bigbutton" onclick = wizardLosDataSave('+los_nr+','+(los_nr + 1)+')>weiter</button>');
|
||||
}
|
||||
else{
|
||||
$('#content').append('<button class = "bigbutton" onclick = wizardLosDataSave('+los_nr+','+(los_nr - 1)+') >zur<75>ck</button><button class = "wizardButtonFertig" onclick = wizardLosDataSave('+los_nr+',' +0+ ')>Fertig</button><button class = "bigbutton" onclick = wizardLosDataSave('+los_nr+','+(los_nr + 1)+')>weiter</button>');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function wizardChargennameSave(neu){
|
||||
wizardData['info']['name'] = document.getElementById('chargenname').value;
|
||||
if(neu){
|
||||
wizardLosData(1, 1);
|
||||
}
|
||||
else{
|
||||
wizardLosData(1, 0);
|
||||
}
|
||||
};
|
||||
|
||||
function wizardChargenname(neu){
|
||||
if(neu){
|
||||
$('#content').html('<h1>neue Charge</h1>');
|
||||
$('#content').append('<p><input type = "text" id = "chargenname"></p>');
|
||||
$('#content').append('<p><button class = "bigbutton" onclick = viewChargenubersicht() >zur<75>ck</button><button class = "bigbutton" onclick = wizardChargennameSave(1)>speichern und weiter</button></p>');
|
||||
}
|
||||
else{
|
||||
$('#content').html('<h1>Charge bearbeiten</h1>');
|
||||
$('#content').append('<p><input type = "text" id = "chargenname" value = '+wizardData['info']['name']+'></p>');
|
||||
$('#content').append('<p><button class = "bigbutton" onclick = viewChargenubersicht()>zur<75>ck</button><button class = "bigbutton" onclick = wizardChargennameSave(0)>speichern und weiter</button></p>');
|
||||
}
|
||||
};
|
||||
|
||||
function wizardStart(chargenNr = 0){
|
||||
if(chargenNr != 0){
|
||||
var path = '/manager/' + chargenNr;
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: path,
|
||||
type: 'GET'
|
||||
})
|
||||
.done(function(data){
|
||||
wizardData = eval("(" + data + ")");
|
||||
wizardChargenname(0);
|
||||
})
|
||||
.fail(function(){
|
||||
alert("Charge konnte nicht geladen werden");
|
||||
});
|
||||
}
|
||||
else{
|
||||
wizardData = {};
|
||||
wizardData['info'] = {};
|
||||
wizardData['info']['anzAuk'] = 0;
|
||||
wizardData['info']['chargenNr'] = -1;
|
||||
|
||||
wizardChargenname(1);
|
||||
}
|
||||
}
|
19
Sammlung/Praktikum/3/ias_p2_b0.1/server.conf
Normal file
19
Sammlung/Praktikum/3/ias_p2_b0.1/server.conf
Normal file
@ -0,0 +1,19 @@
|
||||
[global]
|
||||
tools.log_headers.on: True
|
||||
tools.sessions.on: False
|
||||
tools.encode.on: True
|
||||
tools.encode.encoding:"utf-8"
|
||||
|
||||
server.socket_port: 8080
|
||||
server.socket_timeout:60
|
||||
|
||||
server.thread_pool: 999
|
||||
server.environment: "production"
|
||||
log.screen: True
|
||||
|
||||
[/]
|
||||
tools.staticdir.root: cherrypy.Application.currentDir_s
|
||||
tools.staticdir.on = True
|
||||
tools.staticdir.dir = '.'
|
||||
tools.staticdir.index = 'index.html'
|
||||
|
55
Sammlung/Praktikum/3/ias_p2_b0.1/server.py
Normal file
55
Sammlung/Praktikum/3/ias_p2_b0.1/server.py
Normal file
@ -0,0 +1,55 @@
|
||||
# coding:utf-8
|
||||
|
||||
import os.path
|
||||
import cherrypy
|
||||
|
||||
from app import chargen, log, template, manager
|
||||
#----------------------------------------------------------
|
||||
def main():
|
||||
#----------------------------------------------------------
|
||||
|
||||
# aktuelles Verzeichnis ermitteln, damit es in der Konfigurationsdatei als
|
||||
# Bezugspunkt verwendet werden kann
|
||||
try: # aktuelles Verzeichnis als absoluter Pfad
|
||||
currentDir_s = os.path.dirname(os.path.abspath(__file__))
|
||||
except:
|
||||
currentDir_s = os.path.dirname(os.path.abspath(sys.executable))
|
||||
cherrypy.Application.currentDir_s = currentDir_s
|
||||
|
||||
configFileName_s = 'server.conf' # im aktuellen Verzeichnis
|
||||
if os.path.exists(configFileName_s) == False:
|
||||
# Datei gibt es nicht
|
||||
configFileName_s = None
|
||||
#print("doof")
|
||||
#print("cool")
|
||||
# autoreload und timeout_Monitor hier abschalten
|
||||
# für cherrypy-Versionen >= "3.1.0" !
|
||||
print(configFileName_s)
|
||||
cherrypy.engine.autoreload.unsubscribe()
|
||||
cherrypy.engine.timeout_monitor.unsubscribe()
|
||||
cherrypy.config.update(configFileName_s)
|
||||
|
||||
cherrypy.tree.mount(
|
||||
None, '/', configFileName_s
|
||||
)
|
||||
|
||||
cherrypy.tree.mount(
|
||||
chargen.chargen_cl(), '/chargen', {'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}}
|
||||
)
|
||||
cherrypy.tree.mount(
|
||||
log.log_cl(), '/log', {'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}}
|
||||
)
|
||||
cherrypy.tree.mount(
|
||||
manager.manager_cl(), '/manager', {'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}}
|
||||
)
|
||||
cherrypy.tree.mount(
|
||||
template.Template_cl(), '/template', {'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}}
|
||||
)
|
||||
|
||||
cherrypy.engine.start()
|
||||
cherrypy.engine.block()
|
||||
|
||||
#----------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
#----------------------------------------------------------
|
||||
main()
|
@ -0,0 +1,21 @@
|
||||
<!-- Template -->
|
||||
|
||||
@var rows_o = context;@
|
||||
|
||||
<h1>Chargenliste</h1>
|
||||
|
||||
<table border = 1>
|
||||
<tr>
|
||||
<td>ChargenNr</td><td>Name</td>
|
||||
</tr>
|
||||
@for var key_s in rows_o@
|
||||
@var row_o = rows_o[key_s];@
|
||||
|
||||
<tr id='#key_s#'>
|
||||
<td>#key_s#</td><td>#row_o['chargeName']#</td><td><button onclick = wizardStart(#key_s#)>bearbeiten</button></td><td><button onclick = wizardDelete(#key_s#)>
|
||||
loeschen</button></td>
|
||||
</tr>
|
||||
|
||||
@endfor@
|
||||
</table>
|
||||
<!-- EOF -->
|
20
Sammlung/Praktikum/3/ias_p2_b0.1/templates/engine/log.tpl
Normal file
20
Sammlung/Praktikum/3/ias_p2_b0.1/templates/engine/log.tpl
Normal file
@ -0,0 +1,20 @@
|
||||
<!-- Template -->
|
||||
|
||||
@var rows_o = context;@
|
||||
|
||||
<h1>Logfile</h1><p><button onclick = viewAuktionen()>zurueck</button></p>
|
||||
|
||||
<table border = 1>
|
||||
<tr>
|
||||
<td>Nr</td><td>Kaufer</td><td>Charge</td><td>Los</td><td>Preis</td><td>Zeitpunkt</td>
|
||||
</tr>
|
||||
@for var key_s in rows_o@
|
||||
@var row_o = rows_o[key_s];@
|
||||
|
||||
<tr id='#key_s#'>
|
||||
<td>#key_s#</td><td>#row_o['user']#</td><td>#row_o['charge']#</td><td>#row_o['los']#</td><td>#row_o['preis']#</td><td>#row_o['time']#</td>
|
||||
</tr>
|
||||
|
||||
@endfor@
|
||||
</table>
|
||||
<!-- EOF -->
|
@ -0,0 +1,15 @@
|
||||
<!-- Template -->
|
||||
|
||||
@var data = context;@
|
||||
<p>Beschreibung</p>
|
||||
<p><input type = "text" id = "beschreibung" value = #data['beschreibung']#></p>
|
||||
<p>Anzahl der Gebinde</p>
|
||||
<p><input type = "text" id = "anzGebinde" value = #data['anzGebinde']#></p>
|
||||
<p>Dauer der Auktion</p>
|
||||
<p><input type = "text" id = "auktionDauer" value = #data['auktionDauer']#></p>
|
||||
<p>Startpreis</p>
|
||||
<p><input type = "text" id = "startPreis" value = #data['startPreis']#></p>
|
||||
<p>minimaler Preis</p>
|
||||
<p><input type = "text" id = "minPreis" value = #data['minPreis']#></p>
|
||||
|
||||
<!-- EOF -->
|
@ -0,0 +1,14 @@
|
||||
<canvas id = "canvas" width = "300" height = "300">Canvas</canvas>
|
||||
|
||||
<section id = "kaufen" onclick = kaufen('User')><center><h1>Kaufen</h1></center></section>
|
||||
|
||||
<section id = "aktuelleAuktion">aktuelle Auktion</section>
|
||||
<section id = "naechsteAuktion">n<EFBFBD>chste Auktion</section>
|
||||
<section id = "letzteAuktion">letzte Auktion</section>
|
||||
|
||||
<section id = "simManager">
|
||||
<p><button id = "bot1Button" class = "botButtonInactiveStyle" onclick = botStart(1)>Bot 1</button></p>
|
||||
<p><button id = "bot2Button" class = "botButtonInactiveStyle" onclick = botStart(2)>Bot 2</button></p>
|
||||
<p><button class = "bigbutton" onclick = viewChargenubersicht()>Chargen-Manager</button></p>
|
||||
<p><button class = "bigbutton" onclick = viewLogfile()>Log-Files</button></p>
|
||||
</section>
|
@ -0,0 +1,10 @@
|
||||
<p>Beschreibung: </p>
|
||||
<p><input type = "text" id = "beschreibung"></p>
|
||||
<p>Anzahl der Gebinde</p>
|
||||
<p><input type = "text" id = "anzGebinde"></p>
|
||||
<p>Dauer der Auktion</p>
|
||||
<p><input type = "text" id = "auktionDauer"></p>
|
||||
<p>Startpreis</p>
|
||||
<p><input type = "text" id = "startPreis"></p>
|
||||
<p>minimaler Preis</p>
|
||||
<p><input type = "text" id = "minPreis"></p>
|
Reference in New Issue
Block a user