Aktuelle Zeit: 18.12.2018 20:53

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: große Strings/Dateien in EditorGadget laden
BeitragVerfasst: 22.06.2017 21:57 
Offline
Benutzeravatar

Registriert: 22.05.2013 20:35
Wohnort: nahe Wolfsburg
Klar :mrgreen: ...wenn es dir nicht zu viel Arbeit macht :wink:

Das Laden von großen Dateien erfolgt explizit durch den Nutzer und da dies nur im lokalen Netzwerk geschieht, ist es auch nicht ganz so tragisch mit der Größe. Das Laden der Datei, Parsen und Konvertieren schaffe ich bei den Datenmengen (20 MB) in weniger als einer Sekunde. So kann ich die Werte z.B. plotten. StringField ist aber extrem langsam (würde Minuten dauern), daher mache ich es etwas anders.

Ja das anschauen aller Eintäge wird ein Benutzer nur selten geschehen, aber z.B. bei Logdateien könnte es interessant werden. Da habe ich auch Exemplare die >60MB sind.

Das EditorGadget ist allgemein nicht dazu geeignet große Datenmengen darzustellen. Meine Überlegung war es nun, nur Ausschnitte der Datei im Editor darzustellen, je nach dem, wo sich z.B. der Scrollbalken befindet. ..so eine Art Seek-Funktion, die ab einen bestimmten Offset der String-Variable (in der sich der komplette Inhalt der Datei befindet) eine bestimmte Anzahl an Zeilen in den Editor lädt. ....quasi wie es z.B. ein Hex-Editor machen würde.

Bei PureBasic gibt es soweit ich weiß APIs, aber die gehen bei SpiderBasic nun nicht. ...mal sehen ob ich das irgendwie gelöst bekomme....

_________________
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: große Strings/Dateien in EditorGadget laden
BeitragVerfasst: 24.06.2017 20:32 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
SBond hat geschrieben:
Klar :mrgreen: ...wenn es dir nicht zu viel Arbeit macht :wink:

die Herausforderung in diesem Fall war es, das dem ListIconGadget zugrunde liegende dGrid verwenden zu wollen, damit keine externen JavaScript-Libraries geladen werden müssen.

Das Laden und Darstellen der Daten geschieht meines Erachtens nun in akzeptablen Geschwindigkeiten, wobei ein Löwenanteil für die Aufbereitung der Daten verbraten wird. Vielleicht kann ein JS-Profi hier noch an der Tuning-Schraube drehen.

Demo mit Spiel-Daten: [Edit: Den Link gibt's auf Anfrage per PN]

Code:
Code:
EnableExplicit

Enumeration
  #Window_Main
  #Gadget_Grid
EndEnumeration

Global T1

Procedure BlockUI(Message.s)
  ! $.blockUI({ message: v_message });
EndProcedure

Procedure UnblockUI()
  ! $.unblockUI();
EndProcedure

Procedure BindGridToGadget(Gadget, GridColumns, GridData)
 
  ! var selector = $(spider_GadgetID(v_gadget).div).find('.dijitContentPane');
 
  ! var grid = new spider.DGridOnDemandGrid({
  !   collection: v_griddata,
  !   columns: v_gridcolumns
  ! }, selector[0]);
 
  ! selector.data("grid", grid);
 
  ! grid.startup();
 
EndProcedure

! function csvToArray (csv) {
!    var rows = csv.split("\n");
!    return rows.map(function (row) {
!      return row.split("\t");
!    });
! };
! window.csvToArray = csvToArray;

Procedure HTTPRequestCallback(Success, Result.s)
 
  If Success
   
    Debug "Daten geladen in: " + Str(ElapsedMilliseconds() - T1) + " ms"
   
    T1 = ElapsedMilliseconds()
   
    ! var array = csvToArray(v_result);
   
    Debug "Csv -> Array: " + Str(ElapsedMilliseconds() - T1) + " ms"
   
    T1 = ElapsedMilliseconds()
   
    ! var records = [];
   
    ! $.each(array, function(rowCounter, row) {
    !   if (rowCounter == 0) {
    !   } else {
    !     var record = {};
    !     record.id = rowCounter;
    !     $.each(row, function(columnCounter, column) {
    !       record['col' + columnCounter.toString()] = column;
    !     });
    !     records.push(record);
    !   }
    ! });
   
    Protected Store
   
    ! v_store = new spider.DStoreMemory( {data : records, idProperty: 'id'} );
   
    Debug "Daten -> Store: " + Str(ElapsedMilliseconds() - T1) + " ms"
   
    Protected Columns
   
    ! v_columns = {
    !   col0: 'Time [s]',
    !   col1: 'Offset [ms]',
    !   col2: 'Delay [ms]',
    !   col3: 'Dispersion [ms]',
    !   col4: 'Poll [Log2s]'
    ! };
   
    OpenWindow(#Window_Main, 0, 0, 600, 500, "dGrid", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
    ContainerGadget(#Gadget_Grid, 10, 10, 580, 480) : CloseGadgetList()
   
    T1 = ElapsedMilliseconds()
   
    BindGridToGadget(#Gadget_Grid, Columns, Store)
   
    Debug "Store -> Gadget: " + Str(ElapsedMilliseconds() - T1) + " ms"
   
  Else
    Debug "!HTTPRequest()"
  EndIf

  UnblockUI()
 
EndProcedure

BlockUI("<h1>20 MB Daten werden geladen...</h1>")

T1 = ElapsedMilliseconds()

HTTPRequest(#PB_HTTP_Get, "resources/bigdata.csv", "", @HTTPRequestCallback())


Schau es Dir mal an. Wenn Du Fragen hast: Melden!

Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Zuletzt geändert von Kiffi am 26.06.2017 09:25, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: große Strings/Dateien in EditorGadget laden
BeitragVerfasst: 25.06.2017 14:54 
Offline
Benutzeravatar

Registriert: 22.05.2013 20:35
Wohnort: nahe Wolfsburg
wow :mrgreen:

auf sowas wäre ich wohl nicht so schnell gekommen.
Habe tatsächlich noch 2 Fragen an dich: Was genau macht dieses "!" am Anfang der Zeile? Ermöglicht es einfach HTML/JavaScript oder ähnliches zu nutzen?

.. und in dieser Zeiel:
Code:
! var array = csvToArray(v_result);

Wie wird hier v_result an Result.s gebunden? Wenn ich die Variablen umbennene geht es nicht mehr.


auf jeden Fall nochmals vielen Dank <)

Gruß,
Martin

_________________
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: große Strings/Dateien in EditorGadget laden
BeitragVerfasst: 25.06.2017 22:58 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
SBond hat geschrieben:
Was genau macht dieses "!" am Anfang der Zeile? Ermöglicht es einfach HTML/JavaScript oder ähnliches zu nutzen?


es leitet eine Inline JavaScript - Zeile ein:
http://www.spiderbasic.com/documentation/reference/inlinedjs.html

Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: große Strings/Dateien in EditorGadget laden
BeitragVerfasst: 25.06.2017 23:14 
Offline
Benutzeravatar

Registriert: 22.05.2013 20:35
Wohnort: nahe Wolfsburg
oh :oops:

das habe ich wohl geschickt übersehen. Vielen Dank <)

_________________
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye