Information -> Status-> Deutsche Systemzeit und lesbare Betriebszeit

Status
Für weitere Antworten geschlossen.

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Disk Station Manager 2:

In der Status-Anzeige ist die Datum-Zeitformatierung für deutsche User etwas gewöhnungsbedürftig und die Anzeige der Betriebszeit generell, gelinde gesagt, suboptimal. Um das zu ändern muss die Datei /usr/syno/synoman/webman/modules/webman-admin.js gepatcht werden. Das Ergebnis könnt ihr unten sehen. Die Anzeige von Sekunden habe ich bewusst weggelassen, da beide Anzeigen nicht in Echtzeit aktualisiert werden. Vielleicht bastele ich da noch was...

Folgendes wurde ab Zeile 3546 eingefügt, um die geänderte Darstellung zu ermöglichen:
PHP:
// Systemzeit deutsch formatiert darstellen
var charColon = ":", charComma = ",", charDot = ".", charGap = " ";
var strDayOfWeek, strDate, strTime, my_systime;
var intFullYear, intDayOfWeek;
var theMonth, theDay, theHour, theMinute, theSecond;
var objDate_today;    
var arrWeekdays = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
objDate_today = new Date();                                    // Neues Datumsobjekt
intFullYear = objDate_today.getFullYear();                    // Jahr holen
intDayOfWeek = objDate_today.getDay();                        // Nummer des Wochentages holen
strDayOfWeek = arrWeekdays[intDayOfWeek];                    // Wochentagsname aus Array holen
theMonth = objDate_today.getMonth();                        // Monat holen
theDay = objDate_today.getDate();                            // Monatstag holen
theHour = objDate_today.getHours();                            // Stunde holen
theMinute = objDate_today.getMinutes();                        // Minute holen
theMonth = (theMonth < 10) ? "0" + theMonth : theMonth        // Führende Monats-Null wenn < 10
theHour = (theHour < 10) ? "0" + theHour : theHour            // Führende Sunden-Null wenn < 10
theMinute = (theMinute < 10) ? "0" + theMinute : theMinute    // Führende Minuten-Null wenn < 10
// Datumsstring bauen
strDate = strDayOfWeek + charComma + charGap + theDay + charDot + theMonth + charDot + intFullYear;
// Uhrzeitstring bauen
strTime = theHour + charColon + theMinute;
// Deutsche Systemzeit bauen
my_systime = strDate + charGap + strTime;

// Lesbare Stations-Laufzeit, geholt aus 'Original'-Laufzeitstring r.optime
var arrOptime;    
var intOptime_hours_total, intOptime_days, intOptime_hours, intOptime_minutes;
var strDay, strHour, strMinute, my_optime;
arrOptime = r.optime.split(":");                                // Original-Laufzeitstring in Array setzen
intOptime_hours_total = arrOptime[0];                            // Gesamtstunden holen
intOptime_days = Math.floor(intOptime_hours_total/24);            // Volle Tage berechnen
intOptime_hours = intOptime_hours_total % 24;                    // Stunden berechnen
intOptime_minutes = arrOptime[1];                                // Minuten holen
strDay = (intOptime_days == 1) ? " Tag, " : " Tage, ";            // Singular/Plural-Switch für Tage
strHour = (intOptime_hours == 1) ? " Stunde, " : " Stunden, ";    // SP-Switch für Stunden
strMinute = (intOptime_minutes == 1) ? " Minute" : " Minuten";    // SP-Switch für Minuten
// Lesbare Stations-Laufzeit bauen
my_optime = intOptime_days + strDay + intOptime_hours + strHour + intOptime_minutes + strMinute;

//_65.push( [ _T("common", "ds_model"), r.model ], [ _T("status", "ramsize"),    r.ramsize + " " + _T("common", "size_mb") ], [ _T("status", "status_version"), r.version ], [ _T("status", "sys_time"), r.systime ], [ _T("status", "operating_time"), r.optime ]);
_65.push( [ _T("common", "ds_model"), r.model ], [ _T("status", "ramsize"),    r.ramsize + " " + _T("common", "size_mb") ], [ _T("status", "status_version"), r.version ], [ _T("status", "sys_time"), my_systime ], [ _T("status", "operating_time"), my_optime ]);
Es ist zwar Javascript-Code, aber ich habs hier mal in nen PHP-Container gepackt weils so schön bunt ist :D

Die webman-admin.js ist im Original in eine einzige, durchgehende Zeile gepackt und so nicht zu bearbeiten. Daher habe ich noch eine entpackte und schon gepatchte Version angehängt. - Die eigentliche Systemzeit und die Betriebszeit werden nicht angefasst bzw. verändert, es geht hier nur um die Darstellung. Und in folgenden Punkten schließe ich mich allen anderen Script-Postern gerne an:
  • Originaldatei sichern
  • Änderungen am System gehen auf deine Kappe :p
  • Fehler im obigen Code gehen auf meine Kappe :D
Gruß, Sushi
Hinweis: Bei den angefügten Dateien handelt es sich um rar-Partdateien. Nach dem Entfernen der Endung ".txt" können diese entsprechend entpackt werden.
 

Anhänge

  • Screenshot001.jpg
    Screenshot001.jpg
    53,2 KB · Aufrufe: 213
  • webman-admin.part01.rar.txt
    60 KB · Aufrufe: 17
  • webman-admin.part02.rar.txt
    57,6 KB · Aufrufe: 7
Zuletzt bearbeitet von einem Moderator:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hi Sushi,

schöne Dinge machst du da. ;)

Denke bitte aber daran, dass diese Änderungen mit dem nächsten Firmware-Update wieder weg sind.

itari
 

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Ja klar, bin aber nicht so der Updater, solange alles proper läuft und nicht überwältigend neue Funktionen hinzukommen :D
Aber ich habe bei einer Zeile gepennt und eine vergessen :eek:

Die Zeile
Rich (BBCode):
theMonth = objDate_today.getMonth();	// Monat holen
wird zu
Rich (BBCode):
theMonth = objDate_today.getMonth() + 1;	// Monat holen
und unter
Rich (BBCode):
theMinute = objDate_today.getMinutes();		// Minute holen
noch folgende Zeile einfügen
Rich (BBCode):
theDay = (theDay < 10) ? "0" + theDay : theDay	// Führende Tages-Null wenn < 10
Gruß, Sushi
 

stebler

Benutzer
Mitglied seit
02. Jan 2009
Beiträge
74
Punkte für Reaktionen
0
Punkte
6
Hallo Shusi
vielen Dank für den Artikel. Könntest mir noch eine Anleitung geben, wie ich deine .txt-Files ins nötige .js-Format bekomme?

Vielen Dank und Gruss aus Basel
Thomas
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hallo Shusi
vielen Dank für den Artikel. Könntest mir noch eine Anleitung geben, wie ich deine .txt-Files ins nötige .js-Format bekomme?

Vielen Dank und Gruss aus Basel
Thomas
Ähm, Textfile wählen, umbenennen klicken und Dateieindung auf js anpassen. That's it...
 

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
@jahlives: nein Sir. Leider hatte ich im ersten Post nicht erklärt, dass die Dateien RAR-Parts sind *blush*.

@stebler: Die "webman-admin.js" ist nochmal in der korrigierten Version angehängt. Entferne einfach das ".txt" aus den Dateinamen und du kannst entpacken. - Bitte beachte: Die Datei ist ausschließlich für die Firmware-Version DSM 2.0-0722 geeignet. Ich habe die Station DS-108j, aber da die Datei Teil des Disk Station Manager 2 ist, dürfte sie auch auf anderen Stationen funktionieren - ohne Gewähr, daher die Originaldatei sichern.

Gruß, Sushi
 

Anhänge

  • webman-admin.part01.rar.txt
    60 KB · Aufrufe: 7
  • webman-admin.part02.rar.txt
    57,6 KB · Aufrufe: 7

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Ich hab den ersten Beitrag entsprechend angepasst...

Trolli
 

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Hmmm - ich glaub etwa 3-4 Stunden. Aber wenns was wichtiges ist, kannst Du uns immer anschreiben. Dann kriegen wir das schon hin.

Trolli
 

maelcum

Benutzer
Mitglied seit
17. Jan 2009
Beiträge
36
Punkte für Reaktionen
0
Punkte
0
Deutsche Systemzeit und lesbare Betriebszeit

Super Geschichte!
Danke!!

Frage dazu: Wie hast Du die (elendslange) Originaldatei so schön ordentlich mit Zeilenumbruch und Einrückungen hingekriegt?

Ich wollte die Dateien mit mal eben per vimdiff vergleichen, aber durch die Zeilenumbrüche und Einrückungen klappt das nicht. Ich kann zwar alle Zeilenumbrüche entfernen, aber Deine Version der Datei gefällt mir schon *deutlich* besser... :p

Sag bitte nicht, dass Du das per Hand gemacht hast...
 

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
...
Frage dazu: Wie hast Du die (elendslange) Originaldatei so schön ordentlich mit Zeilenumbruch und Einrückungen hingekriegt?
...
Sag bitte nicht, dass Du das per Hand gemacht hast...

LoL, wenn ich das von Hand gemacht hätte, würde ich jetzt in einem weichen Raum mit Wachsmalstiften hantieren ;)
Zur Sache:
  • Installiere den kostenlosen Editor Notepad++.
  • Ersetze jedes ; der Originaldatei durch ;\n -> Erweiterte Einstellung nehmen, wie in der Grafik zu sehen.
  • Ersetze nach dem gleichen Schema:
    • ){ durch ) {\n
    • }if durch }\nif
    • }var durch }\nvar
    • }return durch }\nreturn
  • Markiere den gesamten Code und führe übers Menü aus: TextFX -> TExtFX Edit -> Reindent C++ code
  • Führe übers Menü aus: Format -> Konvertiere zu UNIX
Speichere nach jedem Arbeitsschritt, sonst kommt Notepad eventuell ins Schleudern. - Halte die Reihenfolge der Arbeitsschritte ein. - Kann sein, dass ich noch zusätzliche Ersetzungen vorgenommen hatte, ist schon ne Weile her. Daher kann dein Ergebnis etwas abweichen.

That's it :D

Note: Das Ganze könnte wesentlich eleganter mit regulären Ausdrücken erledigt werden, aber hier ging es mir ja nur um eine einzige Datei und da hätte das Bauen und Testen der Ausdrücke länger als das Ersetzen "von Hand zu Fuß" gedauert, zumal sich Notepad's RegEx nicht genau an die Perl-Syntax hält.

Gruß, Sushi
 

Anhänge

  • npp-srfx.jpg
    npp-srfx.jpg
    25,2 KB · Aufrufe: 55
Zuletzt bearbeitet:

maelcum

Benutzer
Mitglied seit
17. Jan 2009
Beiträge
36
Punkte für Reaktionen
0
Punkte
0
Hi Suhsi.

Danke für die Antwort.

Ich habe versucht es in vim nachzubauen (siehe regex's unten), aber Du hast doch sehr viele Sachen "aufräumt" (kein Vorwurf sondern Anerkennung), so dass ein Vergleich der beiden Dateien immer in hunderten von Punkten fehlschlägt.

In weiteren zwei Stunden habe ich dann versucht, "Deine" Version wieder zu dem Einzeiler zu machen, den Syno ausliefert. Aber hier ist es im Prinzip genauso: Es passt so vieles nicht zueinander (einfache Leerstellen) dass man nicht klar erkennen kann, wo Du Dinge geändert hast, und wo sich die Version 728 u.U. eben doch von 722 unterscheidet.

Nach mehreren Stunden vergeblichen Versuchen (die mir durchaus Spass gemacht haben) habe ich abgebrochen.
Falls Du jemals die Zeit und Lust hast, die webman-admin.js aus einer späteren Firmware-Version zu überarbeiten, denk an mich - oder diesen Thread. Ich bin bestimmt nicht der Einzige, der Dir dankbar wäre... :)
Solange lebe ich mit der Anzeige von Syno.

Danke nochmals.


Gruß

Für mich als Erinnerung die regex's für vim:
:%s/;/;\r/g
9881 substitutions

:%s/){/) {\r/g
3458 substitutions

:%s/\([}]\)\([ivr]\)/\1\r\2/g
512 substitutions

:%s/=/ = /g
6505 substitutions

:%s/= =/==/g
999 substitutions

zus. zu Sushis Angaben:
:%s/:/ :/g
8863 substitutions

:%s/,/, /g
14567 substitutions

Zum Formatieren der Einrückungen:
gg (ganz nach oben gehen)
Ctrl-G (Anzahl Zeilen anzeigen lassen)
<Zeilenanzahl>== (Die <Zeilenanzahl> formatieren)
 

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hi maelcum,

da hast du dir ja wirklich einige Mühe gemacht. Ich bin einen geringfügig ;) schnelleren Weg gegangen: Nach Extraktion der webman-admin.js aus dem 728er-Patchfile und Vergleich mit der originalen 722er webman-admin.js stellte sich heraus, dass beide identisch sind.

Du kannst also meine Version verwenden.

Die "Änderungen" sind ja eigentlich nur zusätzlicher Code (mit Ausnahme der einen auskommentierten Originalzeile; die habe ich zwecks Vergleich dringelassen) und alles ist an einer Stelle eingefügt, wie im ersten Posting zu sehen. - Es ist nicht nötig, wieder einen Einzeiler daraus zu machen. Der Performance-Vorteil würde nur im Millisekundenbereich liegen.

Gruß, Sushi
 
Zuletzt bearbeitet:

maelcum

Benutzer
Mitglied seit
17. Jan 2009
Beiträge
36
Punkte für Reaktionen
0
Punkte
0
Ähem... *hüstel*

Gilt das auch für die 731-er Version?
Ich hatte leider vergessen die alte Originaldatei vor dem Update zu sichern, so dass ich jetzt wieder nur die neue Originaldatei und die nicht-vergleichbare von dir schön aufgeräumte habe... Sorry.
:eek:
 

Sushi

Benutzer
Mitglied seit
18. Okt 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Ja, das gilt auch für die 731er Version. Die originale, unangetastete 722er (mit der ich dann den Patch gebaut hatte) kannst du hier zwecks weiterer Verwendung runterladen ;)

Gruß, Sushi
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat