Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Gelöst] Sortierung Json-String aus SQL-Datenbank

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    698

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

[Gelöst] Sortierung Json-String aus SQL-Datenbank

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 2 Kommentatoren 391 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    stenmic
    schrieb am zuletzt editiert von stenmic
    #1

    Moin,
    mit folgendem Script schreibe ich Daten aus der Datenbank in einen Json-String um ihn in VIS darzustellen.

    var end = new Date().getTime();
    sendTo('sql.0', 'getHistory', {
    
        // QUELLE SQL ---------------------------------------------------------------
        id: 'javascript.0.xxx',
        // QUELLE SQL ---------------------------------------------------------------
        
        options: {
        end:       new Date().getTime(),
        count:     10,
        aggregate: 'onchange'
    	}
    }, function (result) {
        Jstring = "[";
        for (var i = 0; i < result.result.length; i++) {
        Jstring = Jstring + "{\"Datum\":\""+formatDate(result.result[i].ts, "DD.MM.")+"\",\"Dauer\":\""+result.result[i].val+"\"}";
         if (i < result.result.length-1) {
    	Jstring = Jstring +",";
    	}
    }
        Jstring = Jstring + "]"
    
        //ZIEL Datenpunkt -----------------------------------------------------------
        setState('javascript.0.xxx_json',  Jstring);
        //ZIEL Datenpunkt -----------------------------------------------------------
    });
    

    Nun würde ich gerne den neusten Eintrag oben stehen haben und ich schaffe es nicht die Sortierung zu ändern.

    Image 003.jpg

    Die Einstellmöglichkeit im Widget ändert leider nichts.

    Image 006.jpg

    Habt ihr einen Tip?

    T 1 Antwort Letzte Antwort
    0
    • S stenmic

      Moin,
      mit folgendem Script schreibe ich Daten aus der Datenbank in einen Json-String um ihn in VIS darzustellen.

      var end = new Date().getTime();
      sendTo('sql.0', 'getHistory', {
      
          // QUELLE SQL ---------------------------------------------------------------
          id: 'javascript.0.xxx',
          // QUELLE SQL ---------------------------------------------------------------
          
          options: {
          end:       new Date().getTime(),
          count:     10,
          aggregate: 'onchange'
      	}
      }, function (result) {
          Jstring = "[";
          for (var i = 0; i < result.result.length; i++) {
          Jstring = Jstring + "{\"Datum\":\""+formatDate(result.result[i].ts, "DD.MM.")+"\",\"Dauer\":\""+result.result[i].val+"\"}";
           if (i < result.result.length-1) {
      	Jstring = Jstring +",";
      	}
      }
          Jstring = Jstring + "]"
      
          //ZIEL Datenpunkt -----------------------------------------------------------
          setState('javascript.0.xxx_json',  Jstring);
          //ZIEL Datenpunkt -----------------------------------------------------------
      });
      

      Nun würde ich gerne den neusten Eintrag oben stehen haben und ich schaffe es nicht die Sortierung zu ändern.

      Image 003.jpg

      Die Einstellmöglichkeit im Widget ändert leider nichts.

      Image 006.jpg

      Habt ihr einen Tip?

      T Offline
      T Offline
      ticaki
      schrieb am zuletzt editiert von ticaki
      #2

      @stenmic
      Hallo,
      das Array vorher zu sortieren wäre doch bestimmt eine Möglichkeit oder?

      }, function (result) {
          if (!Array.isArray(result.result)) return;
          result.result.sort(sortArray);
          Jstring = "[";
          for (var i = 0; i < result.result.length; i++) {
      
      function sortArray(a,b) {
        //var t1 = a[0].split('.');
        //var t2 = b[0].split('.');
        //return ((t1[0]*31+t1[1]) - (t2[0]*31+t2[1]));
      // falsch
      }
      

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      S 1 Antwort Letzte Antwort
      0
      • T ticaki

        @stenmic
        Hallo,
        das Array vorher zu sortieren wäre doch bestimmt eine Möglichkeit oder?

        }, function (result) {
            if (!Array.isArray(result.result)) return;
            result.result.sort(sortArray);
            Jstring = "[";
            for (var i = 0; i < result.result.length; i++) {
        
        function sortArray(a,b) {
          //var t1 = a[0].split('.');
          //var t2 = b[0].split('.');
          //return ((t1[0]*31+t1[1]) - (t2[0]*31+t2[1]));
        // falsch
        }
        
        S Offline
        S Offline
        stenmic
        schrieb am zuletzt editiert von
        #3

        @ticaki
        Könntest du mir bitte mal deine Schniplsel an die richtige Stelle meines Scripts kopieren.
        Ich bekommes es nicht gebacken.

        T 1 Antwort Letzte Antwort
        0
        • S stenmic

          @ticaki
          Könntest du mir bitte mal deine Schniplsel an die richtige Stelle meines Scripts kopieren.
          Ich bekommes es nicht gebacken.

          T Offline
          T Offline
          ticaki
          schrieb am zuletzt editiert von ticaki
          #4

          @stenmic
          der 1. Teil ist da wo er hin soll. Der 2. Teil einfach ganz am Anfang oder Ende
          Habs nochmal editiert,da es mit 30 als Monatstage ein Problem am 1.02/31.01 erzeugt. 31 erzeugt soweit ich das sehe nie ein problem. :)

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          T 1 Antwort Letzte Antwort
          0
          • T ticaki

            @stenmic
            der 1. Teil ist da wo er hin soll. Der 2. Teil einfach ganz am Anfang oder Ende
            Habs nochmal editiert,da es mit 30 als Monatstage ein Problem am 1.02/31.01 erzeugt. 31 erzeugt soweit ich das sehe nie ein problem. :)

            T Offline
            T Offline
            ticaki
            schrieb am zuletzt editiert von ticaki
            #5

            Edit: Hab aber etwas übersehen, sorry ist wahrscheinlich das es nicht funktioniert und ich muß jetzt weg :)
            Edit2: Korrektur

            var end = new Date().getTime();
            sendTo('sql.0', 'getHistory', {
             
                // QUELLE SQL ---------------------------------------------------------------
                 id: 'javascript.0.xxx',
                 // QUELLE SQL ---------------------------------------------------------------
                 
                 options: {
                 end:       new Date().getTime(),
                 count:     10,
                 aggregate: 'onchange'
             	}
             }, function (result) {
                  if (!Array.isArray(result.result)) return;
                  result.result.sort(sortArray);
                  Jstring = "[";
                 for (var i = 0; i < result.result.length; i++) {
                 Jstring = Jstring + "{\"Datum\":\""+formatDate(result.result[i].ts, "DD.MM.")+"\",\"Dauer\":\""+result.result[i].val+"\"}";
                  if (i < result.result.length-1) {
             	Jstring = Jstring +",";
             	}
             }
                 Jstring = Jstring + "]"
              
                 //ZIEL Datenpunkt -----------------------------------------------------------
                 setState('javascript.0.xxx_json',  Jstring);
                 //ZIEL Datenpunkt -----------------------------------------------------------
             });
            
            function sortArray(a,b) {
              //var t1 = a.ts.split('.');
              //var t2 = b.ts.split('.');
              // return ((t1[0]*31+t1[1]) - (t2[0]*31+t2[1]));
              return a.ts > b.ts;
            }
            

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            S 1 Antwort Letzte Antwort
            0
            • T ticaki

              Edit: Hab aber etwas übersehen, sorry ist wahrscheinlich das es nicht funktioniert und ich muß jetzt weg :)
              Edit2: Korrektur

              var end = new Date().getTime();
              sendTo('sql.0', 'getHistory', {
               
                  // QUELLE SQL ---------------------------------------------------------------
                   id: 'javascript.0.xxx',
                   // QUELLE SQL ---------------------------------------------------------------
                   
                   options: {
                   end:       new Date().getTime(),
                   count:     10,
                   aggregate: 'onchange'
               	}
               }, function (result) {
                    if (!Array.isArray(result.result)) return;
                    result.result.sort(sortArray);
                    Jstring = "[";
                   for (var i = 0; i < result.result.length; i++) {
                   Jstring = Jstring + "{\"Datum\":\""+formatDate(result.result[i].ts, "DD.MM.")+"\",\"Dauer\":\""+result.result[i].val+"\"}";
                    if (i < result.result.length-1) {
               	Jstring = Jstring +",";
               	}
               }
                   Jstring = Jstring + "]"
                
                   //ZIEL Datenpunkt -----------------------------------------------------------
                   setState('javascript.0.xxx_json',  Jstring);
                   //ZIEL Datenpunkt -----------------------------------------------------------
               });
              
              function sortArray(a,b) {
                //var t1 = a.ts.split('.');
                //var t2 = b.ts.split('.');
                // return ((t1[0]*31+t1[1]) - (t2[0]*31+t2[1]));
                return a.ts > b.ts;
              }
              
              S Offline
              S Offline
              stenmic
              schrieb am zuletzt editiert von
              #6

              @ticaki
              fuktioniert leider nicht.

              Image 007.jpg

              T 1 Antwort Letzte Antwort
              0
              • S stenmic

                @ticaki
                fuktioniert leider nicht.

                Image 007.jpg

                T Offline
                T Offline
                ticaki
                schrieb am zuletzt editiert von ticaki
                #7

                @stenmic
                Ja sorry hatte ich schon gesehen :) Die erste Version meines Snips hat nach Dauer sortiert und ich hab dann nur schnell auf Datum geändert ohne mir über datentypen gedanken zu machen.

                Ich weiß leider nicht was genau in "ts" steht

                function sortArray(a,b) {
                  return a.ts > b.ts;
                }
                

                oder

                function sortArray(a,b) {
                  return a.ts.getTime() > b.ts.getTime();
                }
                

                eines der beiden sollte funktionieren.

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                S 1 Antwort Letzte Antwort
                0
                • T ticaki

                  @stenmic
                  Ja sorry hatte ich schon gesehen :) Die erste Version meines Snips hat nach Dauer sortiert und ich hab dann nur schnell auf Datum geändert ohne mir über datentypen gedanken zu machen.

                  Ich weiß leider nicht was genau in "ts" steht

                  function sortArray(a,b) {
                    return a.ts > b.ts;
                  }
                  

                  oder

                  function sortArray(a,b) {
                    return a.ts.getTime() > b.ts.getTime();
                  }
                  

                  eines der beiden sollte funktionieren.

                  S Offline
                  S Offline
                  stenmic
                  schrieb am zuletzt editiert von
                  #8

                  @ticaki
                  Danke für deine Unterstützung.
                  So wie es aussieht funktioniert es mit

                  function sortArray(a,b) {
                    return b.ts > a.ts;
                  }
                  

                  Ich musste a und b vertauschen.

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  486

                  Online

                  32.6k

                  Benutzer

                  82.0k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe