5

HTML + ui.popupRecord

Hallo zusammen,

hab eine Verständnisfrage:

Folgender Code funktioniert. Er zeigt mir in einem Funktionsfeld HTML-Buttons an, die zum jeweiligen Datensatz zeigen. Beim Klick auf einen Butten öffnet sich der entsprechende Datensatz.

let me := this;
let AA := (select Test);
for aa in AA do
    html(---
<p><button onclick="ui.popupRecord('{ aa }')">{ aa.Text }</button></p>
---)
end

Durch die 3 Bindestriche kann man HTML etwas komfortabler schreiben und die Anführungszeichen beibehalten. Mit einer geschweiften Klammer kann man dennoch auf Variablen zugreifen.

Der Code funktioniert nicht, wenn ich vor der ersten Variable bzw. vor deren geschweifter Klammer das ' weglasse. Kann. mir das jemand verständlich erklären? Finde Leiter im gesamten Forum nichts zu "ui.popupRecord"...

Besten Dank schonmal im Voraus!

VG
Johannes 

31 Antworten

null
    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Johannes Faller grüß dich Johannes,

    das ist eine tolle Lösung, da hier das ganze über popupRecord stattfindet. 

    Gibt es noch eine Möglichkeit die button´s einzufärben? Bezug wäre einfach die Farbe des Auswahlfeldes 

     "background-color:" + color(i.'WVL gelesen')

    Danke dir

    Michi

     

     "background-color:" + color(i.'WVL gelesen')
    
    
    let serch := (select Wiedervorlagen);
    for i in serch do
        html(---
    <p><button onclick="ui.popupRecord('{ i }')">{ i.'zu KV' + " " + i.Vorlagentext }</button></p>
    ---)
    end
    
    

     

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Johannes. Ich schließe mich mal Michi an. Es ist eine coole Lösung. Ist mir ein Rätsel, wie Du darauf gekommen bist. Ich lege html-code generell in eine Variable und verzichte auf die drei Bindestriche, aber damit konnte ich Deinen Code nicht nachstellen. Danke für's Teilen. Mirko

      • john_eans
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko und Michi
      Mir ist es auch ein Rätsel ;-)
      Ich hab sowas schon lange gesucht und hab neulich in einer Vorlag von Ninox gesehen, dass dort in einem Funktionsfeld auf Links zu einem Record geklickt werden kann. Zu Websites oder sonst. Links außerhalb von Ninox hatte ich auch schon länger eingebaut, aber "ui.popupRecord" war dann die Lösung.
      Ich habs leider noch nicht ganz gerafft, warum ich z.B das einfache Anführungszeichen ' bei der ersten variablen benötige, bei der zweiten aber nicht.

      Für euer Beispiel mit dem Farbwert benötigt man ja z.B. auch kein Anführungszeichen mehr.

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Johannes Faller grüß doch,

      Blöde frage. Kann man hiermit auch erzeugte html tabellen per oneclick ansteuern? Also den dazugehörigen record öffnen? Das wäre mal richtig geil.

      Grüße Michi

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Die tabelle vom Mirko zeigt mir alle kunden vom Liefer Tag. Hier noch "rein clicken " zu können wäre so was von geil. Vielleicht habt ihr ja ne Lösung. 

      let lt := 'Liefertermin von';
      let oben := format(date('Liefertermin von'), "dddd - DD.MM.YYYY");
      let content := "
      <style>
      /*Rahmen zusammenfallend und nur senkrecht*/
      table,td,th{
          border:thin solid #000;
          border-collapse:collapse;
          font: lighter 1.2em Arial, serif;
          }
      thead,th{
          background-color:rgb(223,223,223);
          padding: .1em .5em;
          font-size:medium;
          text-align:center
          letter-spacing: .5em;
          }
      </style>
      <table> 
          <thead>
              <tr>
                  <th> Team </th>
                  <th> Name </th>
                  <th> Planzeit </th>
                  <th> Ort </th>
                  <th> Von </th>
              </tr>
          </thead>
          <tbody>
              " + if 'Liefertermin von' then
              ((select 'Aufträge') order by 'Team wählen')['Liefertermin von' = lt or 'Liefertermin bis' = lt].("
              <tr>
              <td style=background-color:" + color('Team wählen') + "> " + 'Team wählen' + " </td><td  style=background-color:" + color('Team wählen') + "> " + Name + " </td><td  style=background-color:" + color('Team wählen') + "> " + Planzeit + " </td><td  style=background-color:" + color('Team wählen') + "> " + Ort + " </td><td  style=background-color:" + color('Team wählen') + "> " + Vertragspartner.'Firmen zusatz' + " </td>       
              </tr>
              ")
          end + "
          </tbody>
      </table>
      ";
      html(content)

      • john_eans
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi Das geht auf jeden Fall.

      Ich hab es aus der Vorlage "Abwesenheitsplaner" von Ninox, in der ist auch eine HTML-Tabelle.

      Folgender Code mal Quick & Dirty.

      let lt := 'Liefertermin von';
      let oben := format(date('Liefertermin von'), "dddd - DD.MM.YYYY");
      let content := "
      <style>
      /*Rahmen zusammenfallend und nur senkrecht*/
      table,td,th{
          border:thin solid #000;
          border-collapse:collapse;
          font: lighter 1.2em Arial, serif;
          }
      thead,th{
          background-color:rgb(223,223,223);
          padding: .1em .5em;
          font-size:medium;
          text-align:center
          letter-spacing: .5em;
          }
      </style>
      <table>
          <thead>
              <tr>
                  <th> Team </th>
                  <th> Name </th>
                  <th> Planzeit </th>
                  <th> Ort </th>
                  <th> Von </th>
              </tr>
          </thead>
          <tbody>
              " + if 'Liefertermin von' then
              ((select 'Aufträge') order by 'Team wählen')['Liefertermin von' = lt or 'Liefertermin bis' = lt].("
              <tr>
              <td style=background-color:" + color('Team wählen') + "> " + 'Team wählen' + ---
       <button onclick="ui.popupRecord('{ Nr }')">{ "Click" }</button>
      --- + " </td><td  style=background-color:" + color('Team wählen') + "> " + Name + " </td><td  style=background-color:" + color('Team wählen') + "> " + Planzeit + " </td><td  style=background-color:" + color('Team wählen') + "> " + Ort + " </td><td  style=background-color:" + color('Team wählen') + "> " + Vertragspartner.'Firmen zusatz' + " </td>
              </tr>
              ")
          end + "
          </tbody>
      </table>
      ";
      html(content)
      

      Ich hab bei dir irgendwie die Schleife für die entsprechenden Werte vermisst, aber funktioniert ja irgendwie....
      Ich hab jetzt einfach den entsprechenden Code eingefügt.

      + ---
       <button onclick="ui.popupRecord('{ Nr }')">{ "Click" }</button>
      --- +
      

      Hoffe das funktioniert so in deiner Tabelle...

      VG

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Johannes probier ich lieben gerne aus. 

      Danke dir,

      Ist echt ne Erweiterung die super ist 

      • Rafael_Sanchis
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Johannes is it possible to have an example in a short DB, Thanks

      • john_eans
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Rafael Sanchis Of course,
      I have it once as a button, as a table and as a button in a table.

      • Rafael_Sanchis
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Johannes thanks 👍 Johannes

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Einfärben klappt, jetzt noch das icon hinterher wäre cool . 

    hab da was mit before gefunden... aber da hört es schon wieder auf.

    button::before {
      content: "🔎 ";
    }
    let serch := (select Wiedervorlagen);
    for i in serch do
        html(---
    <p><button onclick="ui.popupRecord('{ i }')" style="background-color:{ color(i.'WVL gelesen') }">{ i.'zu KV' + " " + i.Vorlagentext + icon(i.'WVL gelesen') } </button></p>
    ---)
    end
    
      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi versuche mal den Unicode einzufügen: &#128269;

      ...icon(i.'WVL gelesen') } &#128269; </button>...
      
      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko das geht. Aber mit icon (auswahlfeld) bekomm ich nur die Bezeichnung, nicht das symbol (in dem fall Warn2 oder check)

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi Wenn Du ein Ninox-Icon übertragen möchtest, weiß ich keine Lösung. Aber Du kannst statt icon(i.'WVL gelesen') ein if-else Konstrukt einfügen (if 'WVL gelesen' = 1 then "&#9989;" else "&#10071;" end) oder nimmst unicode Deiner Wahl auf https://unicode-table.com/de/

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko ok das wusste ich nicht. Danke Dir und Johannes. So ist das optisch und von der Bedienung her schön zu Händeln.

    • Rafael_Sanchis
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi. I modify a little the Example_02, but I will like when I select the Teams in the Choice , view only the Teams I selected, if this posible ?

      • john_eans
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Rafael Sanchis I have added the additional filter and adjusted the sum of the hours and the number of entries (in the last row).

      • Rafael_Sanchis
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Johannes Excelent John appreciate your help

    • Sven_Glaser
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo an alle,

    sehr coole Lösung für HTML Tabellen mit Button. Hab ihr vielleicht auch eine IDEE wie man in der Tabelle ein Ja/Nein Feld anzeigen lassen kann bei dem bei draufklicken der Wert auf Ja bzw Nein geändert wird ohne den Datensatz öffnen zu müssen. Ich bin schon sehr lange nach einer solchen Lösung auf der suche. vielleicht könnt Ihr mir weiterhelfen

     

    Gruss Sven

      • john_eans
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Sven Glaser also in der Theorie müsste man auch andere Ninox-Funktionen in den HTML-Code legen können. Ich bekomm es aber aktuell nicht hin. Gibt dazu leider auch keine Dokumentation.

       Sorry

      • john_eans
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Sven 

      Also es funktioniert z.B. neben popupRecord auch :

      <button onclick="ui.openRecord('{ Nr }')">{ "Open" }</button>
      
      <button onclick="ui.closeRecord()">{ "Close" }</button>
      
      <button onclick="ui.openFullscreen('{ Nr }')">{ "OpenFull" }</button>
      
      <button onclick="ui.closeFullscreen()">{ "CloseFull" }</button>

      Folgendes funktioniert aber nicht:

      <button onclick="ui.alert()">{ "alert" }</button>
      
    • Daniel_B
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo,

    folgendes sollte auch funktionieren:

    ui.openRecord
    ui.popupRecord
    ui.openFullscreen
    ui.closeFullscreen
    ui.closeRecord
    ui.closeAllRecords
    ui.openTable
    ui.openCalendar
    ui.openSearch
    ui.openHome
    

    Zwei Funktionen mit ; trennen:

    onclick="ui.openCalendar(); ui.closeAllRecords();
    

    Öffnet den Kalender (im Hintergrund) und schließt alle anderen "Fenster".

      • kevin.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hi  ,

      ich versuche gerade die Funktion openTable im Code zu benutzen und habe folgende Varianten ausprobiert: 

      let me := this;
      let test := first(select Invoices);
      let inv := (select Invoices);
      html(---
      <p><span onclick="ui.popupRecord( '{ test }' )">{ "Record" }</span></p>
      
      <p><span onclick="ui.openTable( ""Invoices"" )">{ "Table" }</span></p>
      <p><span onclick="ui.openTable( '{ inv }' )">{ "Table" }</span></p>
      <p><span onclick="ui.openTable( 'Invoices' )">{ "Table" }</span></p>
      ---)
      

      Leider funktioniert keine dieser Varianten. Weißt du, wie die Syntax auszusehen hat? 
      Danke im Vorraus!

      • Rafael_Sanchis
      • vor 1 Jahr
      • Gemeldet - anzeigen

      KevinHi this and works perfect

      <td style=background-color:" +
              ---
                      border="" ">
                  <button onclick="ui.popupRecord('{ a.nid }')">{ "Álbum " }</button>
              --- +
              " </td>

       

      https://youtu.be/oSSMl0rDuFE

      • kevin.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hi,   thanks for the answer,

      but with this code you can open a record and not a table.