An der Wand befestigter Helpdesk-Statusbildschirm - Wie Man

An der Wand befestigter Helpdesk-Statusbildschirm

Was ich wollte, war eine Webseite, die auf einen Blick grundlegende Informationen über meine Helpdesk-Tickets für Gewürze enthält

für Benutzer, die zum Helpdesk kommen, und für die IT-Abteilung, um zu wissen, wo wir uns beruflich befinden

Der Plan sieht eine selbstauffrischende HTML-Seite vor. Diese wird auf einem alten Ersatz-Thin Client ausgeführt und auf einem 19-Zoll-Bildschirm angezeigt

8 Schritte insgesamt

Schritt 1: Datenbankzugriff

Zuerst musste ich Zugriff auf die Spiceworks-Datenbank bekommen
Ich fand, dass es einen ODBC-Treiber für SQLite (die Datenbank hinter Spiceworks) gibt

Dies kann von heruntergeladen werden
http://www.ch-werner.de/sqliteodbc/

Ich habe dies als DSN auf demselben Server eingerichtet, auf dem Spiceworks ausgeführt wird

Schritt 2: Lesen der DB

Jetzt habe ich meinen DSN. Ich kann ein VBScript schreiben, um Informationen aus dem DB-Prozess abzurufen und eine HTML-Datei zu schreiben

Ich weiß, dass VBScript nicht trendy ist und asp.net funktionieren würde
Aber ich kenne VBscript, also benutze ich es

Unten finden Sie meine VBScript-Datei

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const AdUseClient = 3

Set objFS = CreateObject ("Scripting.FileSystemObject")
Set objNewFile = objFS.CreateTextFile ("status.html")

Set objConnection = CreateObject ("ADODB.Connection")
Set objRecordset = CreateObject ("ADODB.Recordset")

ruft = 0 auf
offene Anrufe = 0
geschlossene Anrufe = 0
nicht zugeordnete Anrufe = 0
pb = 0
pg = 0
dp = 0
kw = 0

objConnection.Open "DSN = spice2;"

objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT-Status, Zugewiesene_An, Abgeschlossene Tickets", objConnection, _
adOpenStatic, adLockOptimistic

objRecordSet.MoveFirst

Tun Sie bis objRecordset.EOF

'Wscript.Echo objRecordset.Fields.Item ("id")

Wenn objRecordset.Fields.Item ("status") = "open" Dann
offene Anrufe = offene Anrufe + 1
Ende wenn

If Not IsNull (objRecordset.Fields.Item ("closed_at")) Dann
closedDate = Left (objRecordset.Fields.Item ("closed_at"), 10)
Wenn objRecordset.Fields.Item ("status") = "closed" Dann
Wenn DateDiff ("d", Closeddate, jetzt) ​​<30 Dann
geschlossene Anrufe = geschlossene Anrufe + 1
Ende wenn
Ende wenn
Ende wenn

If IsNull (objRecordset.Fields.Item ("named_to")) Dann
nicht zugeordnete Anrufe = nicht zugeordnete Anrufe + 1
Ende wenn

Wenn objRecordset.Fields.Item ("named_to") = "1" Dann
Wenn objRecordset.Fields.Item ("status") = "open" Dann
pb = pb + 1
Ende wenn
Ende wenn

Wenn objRecordset.Fields.Item ("named_to") = "2" Dann
Wenn objRecordset.Fields.Item ("status") = "open" Dann
dp = dp + 1
Ende wenn
Ende wenn

Wenn objRecordset.Fields.Item ("added_to") = "3" Dann
Wenn objRecordset.Fields.Item ("status") = "open" Dann
pg = pg + 1
Ende wenn
Ende wenn

Wenn objRecordset.Fields.Item ("named_to") = "4" Dann
Wenn objRecordset.Fields.Item ("status") = "open" Dann
kw = kw + 1
Ende wenn
Ende wenn

objRecordSet.MoveNext

Schleife

Calls = objRecordset.RecordCount

objRecordSet.Close
objConnection.Close

objNewFile.WriteLine "// W3C // DTD HTML 4.01 // DE>"
objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.WriteLine "Vernalis ITI Helpdesk Anrufstatus-System"
objNewFile.WriteLine ""
objNewFile.WriteLine ""

objNewFile.WriteLine "Call Status @" & Now () & "

'

objNewFile.WriteLine "

'

Wenn nicht zugeordnete Anrufe> 0, dann

objNewFile.WriteLine ""
objNewFile.WriteLine "UN:" & unassignedcalls & "
'
objNewFile.WriteLine ""

Sonst

objNewFile.WriteLine "
'

Ende wenn

objNewFile.WriteLine "PB:" & pb & "
DP: "& dp &"
KW: "& kw &"
PG: "& pg

objNewFile.WriteLine "

'

Bei offenen Anrufen> 50 dann

objNewFile.WriteLine ""
objNewFile.WriteLine Opencalls
objNewFile.WriteLine ""

Sonst

objNewFile.WriteLine ""
objNewFile.WriteLine Opencalls
objNewFile.WriteLine ""

Ende wenn

objNewFile.WriteLine "
"& geschlossene Anrufe &" Anrufe in den letzten 30 Tagen geschlossen "

objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.Close

Schritt 3: Schlüsselpunkte des VBScript

Da ich dieses Skript noch nicht kommentiert habe, erwähne ich noch einige wichtige Punkte

objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT-Status, Zugewiesene_An, Abgeschlossene Tickets", objConnection, _
adOpenStatic, adLockOptimistic

zieht alle Datensätze aus der Datenbank heraus, aber nur die drei Felder, in die ich mich interessiere, fand ich, wenn ich faul war und alle Felder zog, bekam ich einen z_fail-Fehler, von dem ich denke, dass er mit Nullfeldern zusammenhängt

Meine umfangreiche Liste von if-Anweisungen verarbeitet jeden Datensatz, und unter Bedingungen, die erfüllt werden, wird einer Reihe von Variablen 1 hinzugefügt

Die zweite Hälfte des Skripts schreibt Zeile für Zeile eine HTML-Datei
Kep-Punkte sind

objNewFile.WriteLine ""

Diese Seite alle 10 Sekunden neu laden

Wenn nicht zugeordnete Anrufe> 0, dann

objNewFile.WriteLine ""
objNewFile.WriteLine "UN:" & unassignedcalls & "
'
objNewFile.WriteLine ""

Sonst

objNewFile.WriteLine "
'

In diesem Teil werden die nicht zugewiesenen Aufrufe der Variable betrachtet. Wenn mehr als 0 Zeilen enthalten, werden der Wert dieser Variablen und einige Formatierungen aus einer externen CSS-Datei in späteren Schritten beschrieben

wenn nicht größer als 0, wird nur a geschrieben
(neue Zeile in HTML)

Ich mache etwas Ähnliches für die Anzahl der offenen Anrufe später, wenn große als 50 offene Anrufe unterschiedliche Formatierungen verwenden und die Anzahl rot machen

objNewFile.WriteLine "PB:" & pb & "
DP: "& dp &"
KW: "& kw &"
PG: "& pg

Am Ende dieser Zeile wird die Anzahl der Anrufe angezeigt, die jeder der 4 Personen in meinem Team zugewiesen sind
Dies wird von der CSS hinterlassen

Mein letztes Stück ist
objNewFile.WriteLine "
"& geschlossene Anrufe &" Anrufe in den letzten 30 Tagen geschlossen "

Hier wird die Anzahl der Anrufe angezeigt, die in den letzten 30 Tagen mit geschlossen wurden

if Not IsNull (objRecordset.Fields.Item ("closed_at")) Dann
closedDate = Left (objRecordset.Fields.Item ("closed_at"), 10)
Wenn objRecordset.Fields.Item ("status") = "closed" Dann
Wenn DateDiff ("d", Closeddate, jetzt) ​​<30 Dann
geschlossene Anrufe = geschlossene Anrufe + 1

Ich gebe zu, es ist ein Durcheinander und ich bin sicher, dass es bessere Wege gibt, dies zu tun

Mit all dem, was ich weiß, gibt es viele Möglichkeiten, dies alles zu tun
und viel von der Verarbeitung konnte in tsql durchgeführt werden
aber ich bin besser in schnell schmutzigen VBScript als SQL

Schritt 4: css

Meine CSS-Datei befindet sich unten, wenn jemand das wiederherstellen möchte, was ich bisher habe
Karosserie {
Schriftfamilie: Georgia, "Times New Roman",
Zeiten, Serife;
Schriftgröße: 30 pt;
Farbe schwarz;
Hintergrundfarbe: weiß}

#leftmain {
Schwimmer: links;
Breite: 15%; }

span.open {
Schriftfamilie: Helvetica, Genf, Arial,
SunSans-Regular, serifenlos;
Farbe grün;
Schriftgröße: 400 pt}

span.openhigh {
Schriftfamilie: Helvetica, Genf, Arial,
SunSans-Regular, serifenlos;
Farbe Rot;
Schriftgröße: 400 pt}

span.unass {
Schriftfamilie: Helvetica, Genf, Arial,
SunSans-Regular, serifenlos;
Farbe Rot;
Hintergrundfarbe: weiß}

Schritt 5: Eine Probe des erzeugten HTML

Unten ist eine Kopie der HTML-Datei von heute
// W3C // DTD HTML 4.01 // DE>

ITI-Helpdesk-Anrufstatus-System

Anrufstatus @ 16/01/2009 13:44:00





PB: 7
DP: 12
KW: 19
PG: 1


39


16 Anrufe wurden in den letzten 30 Tagen geschlossen

Schritt 6: Zukunft

Ich habe jetzt meinen Code hinzugefügt, so dass alle 30 Minuten, wenn datepart min von JETZT 0 oder 30 ist

Jede der Ingenieuren zugeordnete Rufnummer wird mit einer Zufallszahl multipliziert

Die niedrigsten Zahlen werden dann auf dem Bildschirm mit der Meldung "Make Tea" angezeigt.

Schritt 7: ASP

mit hilfe meiner frineds an

http://www.halfshoring.com/

Das Ganze wurde in ASP neu geschrieben
und effizienter gemacht

ASP-Code unten
------------------------------------------------
ï »¿(Datum ('jetzt') + 30))"


'Spaltenvariablen einrichten, die wir anstelle des im VBS verwendeten Elements ("") verwenden
Dim ColStatus, ColAssignedTo, ColClosedAt
ColStatus = 0
ColAssignedTo = 1
ColClosedAt = 2

'Erstellen Sie die Datenbankobjekte
'fast gleich wie VBS, aber Server.CreateObject anstelle von CreateObject verwenden

Dim arrRecords
Dim blnErgebnisse

Dim objConn
Set objConn = Server.CreateObject ("ADODB.Connection")
Dim objRS
Set objRS = Server.CreateObject ("ADODB.Recordset")

'Öffnen Sie die DB-Verbindung
objConn.Open (strConn)

'Führen Sie die SQL aus und laden Sie sie in das Recordset
objRS.Open strSql, objConn

'Fahren Sie nur fort, wenn das Recordset nicht leer ist
Wenn nicht objRS.EOF Then
'Laden Sie das gesamte Recordset in ein Array
"Das heißt, wir halten das Recordset nicht offen, während wir die Seite erstellen.
Dadurch wird die Belastung des DB-Servers und des IIS verringert
arrRecords = objRS.GetRows ()
Sonst
Response.End
Ende wenn

'Schließen Sie die DB-Verbindung
objConn.Close

'Klären Sie unsere DB- und Recordset-Variablen auf
Set objConn = Nichts
Set objRS = Nichts

'Die Daten werden jetzt in arrRecords gespeichert

'Erstelle unsere Zähler
Dim intOpenCalls, intUnassignedCalls, intClosedCalls
Dimmen Sie intPBCalls, intDPCalls, intPGCalls, intKWCalls

'Durchlaufen Sie alle Daten in arrRecords und berechnen Sie die Summen
Dim ich
i = 0
Tun

Wenn arrRecords (ColStatus, i) = "open" Dann
intOpenCalls = intOpenCalls + 1
Ende wenn

If Not IsNull (arrRecords (ColClosedAt, i)) und arrRecords (ColStatus, i) = "closed" Dann
intClosedCalls = intClosedCalls + 1
Ende wenn

If IsNull (ArrRecords (ColAssignedTo, i)) Dann
intUnassignedCalls = intUnassignedCalls + 1
Ende wenn

Wenn arrRecords (ColAssignedTo, i) = "1" und arrRecords (ColStatus, i) = "open" Dann
intPBCalls = intPBCalls + 1
ElseIf arrRecords (ColAssignedTo, i) = "2" Und arrRecords (ColStatus, i) = "open" Dann
intDPCalls = intDPCalls + 1
ElseIf arrRecords (ColAssignedTo, i) = "3" Und arrRecords (ColStatus, i) = "open" Dann
intPGCalls = intPGCalls + 1
ElseIf arrRecords (ColAssignedTo, i) = "4" Und arrRecords (ColStatus, i) = "open" Dann
intKWCalls = intKWCalls + 1
Ende wenn

i = i + 1

Schleife bis i> UBound (arrRecords, 2)

Dim intTotalCalls
intTotalCalls = Ubound (arrRecords, 2)

'Jetzt haben wir alle unsere Werte und können die HTML-Seite erstellen

%>
// W3C // DTD HTML 4.01 // DE>

ITI-Helpdesk-Anrufstatus-System

Anrufstatus @





PB:
DP:
KW:
PG:



Anrufe in den letzten 30 Tagen geschlossen

Schritt 8: Anmerkung 1

ein Punkt zu beachten

wenn ein Benutzer einen Anruf protokolliert
und schließt es, bevor es einem Benutzer zugewiesen wird
es wird als nicht zugewiesen angezeigt
obwohl es geschlossen ist

abschließend
Ich kann nicht gut schreiben, wie auch
Ich werde versuchen, alle Fragen zu beantworten, die Leute haben

Das VBScript wird alle 60 Sekunden vom Windows-Taskplaner ausgeführt
und das html selbst lädt sich alle 10 Sekunden neu, so dass der Bildschirm normalerweise bis zu 70 Sekunden hinterher ist

da im Browser kein Skript läuft, spielt der verwendete Browser keine Rolle

Im Laufe der Zeit werde ich der Anzeige zusätzliche Felder hinzufügen, aber ich bin mir nicht sicher, was noch nicht geschehen ist

alle sudgestions sind willkommen
zusammen mit Gedanken und Kommentaren

Ich wurde nach den Abkürzungen gefragt
pb
pg
db
kw

Das sind die Initialen meiner Teammitglieder
Die Zahlen, die neben jedem angezeigt werden, sind die Anzahl der Jobs, die jeder Person zugewiesen sind

Die Initialen sind in der asp-Seite codiert, aber mit der Zeit bekomme ich die Namen / Initialen aus der entsprechenden Tabelle