1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
class ModelOFOP(QtCore.QAbstractItemModel):
def __init__(self,*args, LsChrono = None, **kwargs):
super(ModelOFOP,self).__init__(*args,**kwargs)
#Arrangement des données de façon heirarchique:
# Utilisateur: poste : opération (Séquence|Multi, début, fin)
#La liste est triée par ordre chronologique et utilisateur.
self.LsOFOP=[]
#Données temporaires:
CrtUt = None
CrtSeq = None
print(LsChrono,sep='\n',end='\n\n')
#Mappage des données (à changer si évolution de la requête)
self.DataMap = {"ID_User":3,
"Seq":1,
"Chrono":2,
"Multi":5,
"Event":4}
for row in LsChrono:
#Passe à un autre opérateur
if CrtUt != row[self.DataMap["ID_User"]]:
self.LsOFOP.append([row[self.DataMap["ID_User"]]])
CrtUt = row[self.DataMap["ID_User"]]
#Début d'une séquence:
if row[self.DataMap["Event"]] == 0:
self.LsOFOP[-1].append([row[self.DataMap["Seq"]],row[self.DataMap["Chrono"]],None,None])
#Autre cas: arrêt de la séquence
else:
#Enregistre heure de fin
self.LsOFOP[-1][-1][2]=row[self.DataMap["Chrono"]]
#Enregistre événement de fin
self.LsOFOP[-1][-1][3]=row[self.DataMap["Event"]]
print(self.LsOFOP,sep='\n',end='\n\n')
def data(self,index, role):
if role == Qt.DisplayRole:
if index.column() == 0:
#Opérateur, à remplacer par le Nom prénom à terme
print("Colonne 0: %s"%self.LsOFOP[index.row()][0])
return self.LsOFOP[index.row()][0]
elif index.column() == 1:
print("Colonne 1: %s"%self.LsOFOP[index.row()][1][0])
return self.LsOFOP[index.row()][1][0]
elif index.column() == 2:
print("Colonne 2: %s"%self.LsOFOP[index.row()][1][1])
#Renvoi début, fin et événément
return self.LsOFOP[index.row()][1][1]
def rowCount(self,index=None):
return len(self.LsOFOP)
def columnCount(self,index = None):
return len(self.DataMap)
#Re définition fonction index
def index(self,row,column,parent=QModelIndex()):
return self.createIndex(row,column,parent)
#Un seul parent en colonne 0
def parent(self,child):
return self.index(child.row(),0) |
Partager