Apps
Neuestes
False
Bannerhintergrundbild
Apps-Benutzerhandbuch
Letzte Aktualisierung 26. Apr. 2024

Benutzerdefinierter HTML-Code

Das benutzerdefinierte HTML-Steuerelement richtet sich an fortgeschrittene Benutzer und bietet die Flexibilität von HTML-, CSS- und JavaScript-Programmiersprachen, um benutzerdefinierte, interaktive Steuerelemente zu erstellen, die ihren geschäftlichen Anforderungen entsprechen. Das Steuerelement enthält dedizierte Editoren für HTML-, CSS- und JavaScript-Code, mit dem zusätzlichen Vorteil, dass extern gehostete CSS- und JavaScript-Dateien über URLs integriert werden können.

Allgemein

  • Code-Editor öffnen – Öffnet einen Editor mit drei Bereichen zum Hinzufügen des HTML-, CSS- und JavaScript-Codes.

  • Zugängliche Beschriftung – Die Beschreibung des Steuerelements. Diese Eigenschaft wird von Bildschirmleseprogrammen für eine verbesserte Zugänglichkeit verwendet.

  • Ausgeblendet – Bei „true“ wird das Steuerelement während der Runtime ausgeblendet.

  • Deaktiviert – Bei „true“ wird das Steuerelement zur Laufzeit inaktiv. Der HTML-, CSS- und JavaScript-Inhalt wird geladen, reagiert jedoch nicht auf Benutzeraktionen wie Klicken.

Events

Keine Ereignisse.

Stil

  • Ausrichtung von Steuerelementen – Erbt standardmäßig die übergeordnete Ausrichtung. Eine andere Ausrichtung als die übergeordnete kann festgelegt werden. Um die Standardausrichtung wiederherzustellen, heben Sie die Markierung der überschriebenen Optionen auf.

    Hinweis: Die Ausrichtung hängt vom Layout ab, das für das übergeordnete Element ausgewählt wurde (vertikal vs. horizontal).
  • Rahmen – Der Rahmen für das Steuerelement. Rahmenstärke und Radius können konfiguriert werden.
  • Seitenrand – Der Seitenrand des Steuerelements. Standardmäßig ist ein Seitenrand von 4px festgelegt. Die Randeigenschaften Oben/Unten und Links/Rechts werden kombiniert. Diese Eigenschaften können mit der Schaltfläche Link rechts neben dem Abschnitt Seitenrand getrennt werden.

  • Größe – Die Breite und Höhe des Steuerelements. Standardmäßig ist die Größe auf auto festgelegt. Um Mindest- oder Höchstwerte festzulegen, klicken Sie auf das Drei-Punkte-Symbol (…).

Code-Editor für benutzerdefiniertes HTML

Der Code-Editor des benutzerdefinierten HTML-Steuerelements bietet drei Bereiche zur Eingabe von Code in den Programmiersprachen HTML, CSS und JavaScript. Jeder Editor unterstützt IntelliSense oder die automatische Codevervollständigung und Syntaxhervorhebung.

Der Code aus den Panels wird zu einem Projekt kompiliert und in Apps Studio zur Vorschau gerendert. Um die Funktionalität des Steuerelements zu beobachten, zeigen Sie eine Vorschau der App an.

docs image
Wichtig:
  • Jeder Editor hat eine maximale Inhaltsgröße von 5 MB. Wenn der Inhalt diese Größe überschreitet, können Sie Ihre Änderungen nicht mehr speichern.

  • IntelliSense funktioniert nicht für CSS- und JavaScript-Codes, die im HTML-Editor geschrieben wurden.

Hinzufügen externer Ressourcen

Wenn Sie bereits Stile oder Skripte definiert haben, können Sie im Steuerelement auf sie verweisen, ohne den Code in die entsprechenden CSS- oder JavaScript-Bereiche schreiben zu müssen.

So verweisen Sie auf vorhandene .css- oder .js -Dateien:
  1. Wechseln Sie im Code-Editor des benutzerdefinierten HTML-Steuerelements zur Registerkarte Externe Ressourcen .

  2. Fügen Sie im Abschnitt CSS eine externe CSS-Datei hinzu. Die Datei muss unter einer für das Netzwerk zugänglichen URL gehostet werden, um die Kompatibilität und Verfügbarkeit an dem Ort sicherzustellen, an dem die App ausgeführt wird.

  3. Fügen Sie im Abschnitt JavaScript eine externe Skriptdatei hinzu. Die Datei muss unter einer für das Netzwerk zugänglichen URL gehostet werden, um die Kompatibilität und Verfügbarkeit an dem Ort sicherzustellen, an dem die App ausgeführt wird.

  4. Wenn Sie alle externen Ressourcen hinzugefügt haben, klicken Sie auf Speichern.

docs image

Tastenkombinationen für die Tabulatortaste

Standardmäßig fügt die Tabulatortaste einen Tabulatorbereich innerhalb des aktuellen Editors hinzu. Um das Verhalten der Tabulatortaste anzupassen, verwenden Sie die folgenden Tastenkombinationen:

OS

Verknüpfung

Verhalten

Windows

STRG+M

Weist die Tabulatortaste an, zwischen den Bereichen zu navigieren und den Fokus auf die sichtbaren Schaltflächen des Editors zu ändern. Drücken Sie STRG+M erneut, um das Standardverhalten der Registerkarte wiederherzustellen.

MacOS

STRG+Umschalt+M

Weist die Tabulatortaste an, zwischen den Bereichen zu navigieren und den Fokus auf die sichtbaren Schaltflächen des Editors zu ändern. Drücken Sie erneut STRG+Umschalt+M, um zum Standard-Registerkartenverhalten zurückzukehren.

Der HTML-Editor

In diesem Panel können Sie die Struktur Ihres Steuerelements eingeben, die normalerweise in den <body></body> -Tags eines Codeblocks enthalten ist.

Um beispielsweise das Containerelement für ein interaktives Kreisdiagramm in Ihrer App hinzuzufügen, würden Sie das folgende HTML-Snippet verwenden:

<canvas id="myChart" class="chart-container" style="width:100%;max-width:600px"></canvas><canvas id="myChart" class="chart-container" style="width:100%;max-width:600px"></canvas>

Wo:

  • id="myChart" verweist auf das JavaScript-Element „myChart“, das das interaktive Kreisdiagramm innerhalb des HTML-Elements generiert. Weitere Informationen finden Sie unter Der JavaScript-Editor.
  • class="chart-container" verweist auf die CSS-Klasse „chart-container“, die den Stil für das Kreisdiagramm innerhalb des HTML-Elements hinzufügt. Weitere Informationen finden Sie unter Der CSS-Editor.

Der CSS-Editor

In diesem Bereich können Sie den Stil Ihres Steuerelements und der darin enthaltenen Elemente eingeben.

Um dem Kreisdiagramm beispielsweise Farben und einen Rahmen hinzuzufügen, würden Sie das folgende CSS-Snippet verwenden:

.chart-container {
    background-color: #f3f7e9;
    border: 1px solid #cccccc;
}.chart-container {
    background-color: #f3f7e9;
    border: 1px solid #cccccc;
}

Der JavaScript-Editor

In diesem Panel können Sie den interaktiven Teil Ihres Steuerelements erstellen, z. B. aktuelle Inhaltsaktualisierungen, Karten oder animierte 2D-/3D-Diagramme.

Um beispielsweise ein Kreisdiagramm für den weltweiten Vertrieb von Apple-Produkten zu erstellen und es so zu gestalten, dass Werte für das ausgewählte Segment angezeigt werden, gehen Sie wie folgt vor:

  1. Fügen Sie die folgende externe JavaScript-Ressource hinzu:

    https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.jshttps://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js
  2. Verwenden Sie den folgenden JavaScript-Snippet:

    const ctx = document.getElementById('myChart').getContext('2d');
    const myChart = new Chart(ctx, {
      type: 'pie',
      data: {
        labels: ['iPhone', 'iPad', 'MacBook', 'Apple Watch', 'AirPods'],
        datasets: [{
          label: 'Sales',
          data: [120000, 80000, 50000, 40000, 30000],
          backgroundColor: [
            '#5CB85C', // Green
            '#F0AD4E', // Orange
            '#D9534F', // Red
            '#5BC0DE', // Light blue
            '#999',    // Gray
          ],
          borderColor: '#fff',
          borderWidth: 2,
        }],
      },
      options: {
        plugins: {
          legend: {
            position: 'top',
          },
          title: {
            display: true,
            text: 'Apple Products Sales',
          },
        },
      },
    });const ctx = document.getElementById('myChart').getContext('2d');
    const myChart = new Chart(ctx, {
      type: 'pie',
      data: {
        labels: ['iPhone', 'iPad', 'MacBook', 'Apple Watch', 'AirPods'],
        datasets: [{
          label: 'Sales',
          data: [120000, 80000, 50000, 40000, 30000],
          backgroundColor: [
            '#5CB85C', // Green
            '#F0AD4E', // Orange
            '#D9534F', // Red
            '#5BC0DE', // Light blue
            '#999',    // Gray
          ],
          borderColor: '#fff',
          borderWidth: 2,
        }],
      },
      options: {
        plugins: {
          legend: {
            position: 'top',
          },
          title: {
            display: true,
            text: 'Apple Products Sales',
          },
        },
      },
    });

Verwenden von Variablen in benutzerdefiniertem HTML-Code

Um die Kommunikation zwischen dem benutzerdefinierten HTML-Steuerelement und anderen Steuerelementen oder Integrationen herzustellen, empfehlen wir , Variablen zu erstellen und die integrierten Funktionen setVariable(), getVariable() und onVariableChange() zu verwenden.

getVariable()

Verwenden Sie diese Funktion im JavaScript-Editor, um den Wert einer vorhandenen Variablen abzurufen.

Um beispielsweise den Wert einer Variablen an internalValue zu übergeben, würden Sie das folgende JavaScript-Snippet verwenden:
async function init() {
  let internalValue = await App.getVariable('<app_variable_name>');
}
init();async function init() {
  let internalValue = await App.getVariable('<app_variable_name>');
}
init();
Hinweis:
  • Die FunktiongetVariable() ist asynchron, deshalb müssen Sie await verwenden.
  • Wenn Sie getVariable() innerhalb einer Funktion aufrufen, machen Sie diese Funktion zu async. Im angegebenen Beispiel haben wir die Funktion init() erstellt und sofort aufgerufen.
  • Wenn Sie getVariable() auf hoher Ebene aufrufen, bebetten Sie es in eine async -Funktion.
Um Fehler wie ungültige Variablennamen zu behandeln, verwenden Sie die Anweisung Try-Catch. Zum Beispiel:
async function init() {
  try {
    const value = await App.getAppVariable("test");
  } catch (e) {
    console.log("Error in evaluating app variable:", e);
  }
}
init();async function init() {
  try {
    const value = await App.getAppVariable("test");
  } catch (e) {
    console.log("Error in evaluating app variable:", e);
  }
}
init();

setVariable()

Verwenden Sie diese Funktion im JavaScript-Editor, um einen Wert für eine vorhandene Variable festzulegen. Das erste Argument ist der Variablenname und das zweite Argument ist der Wert, den Sie festlegen möchten.

async function setValue() {
  await App.setVariable('<app_variable_name>', <app_variable_value>);
}
setValue();async function setValue() {
  await App.setVariable('<app_variable_name>', <app_variable_value>);
}
setValue();
Hinweis:
Um auf den Abschluss des festgelegten Vorgangs zu warten, bevor anderer Code ausgeführt wird, verwenden await.
Um Fehler wie ungültige Variablennamen oder Typfehler zwischen der Variablen und dem festgelegten Wert zu behandeln, verwenden Sie die Anweisung Try-Catch. Zum Beispiel:
try {
  App.setVariable('<app_variable_name>', <app_variable_value>);
} catch (e) {
  console.log("Error in setting app variable:", e);
}try {
  App.setVariable('<app_variable_name>', <app_variable_value>);
} catch (e) {
  console.log("Error in setting app variable:", e);
}

onVariableChange()

Verwenden Sie diese Funktion im JavaScript-Editor, um Änderungen eines vorhandenen Variablenwerts abzuhören und auf den neuesten Variablenwert zuzugreifen.

App.onVariableChange('<app_variable_name>', value => {
  console.log("Latest value: ", value);
});App.onVariableChange('<app_variable_name>', value => {
  console.log("Latest value: ", value);
});
Im folgenden Beispiel weisen wir die von onVariableChange() zurückgegebene Funktion der Variablen deregister zu. Wenn Sie dann die Überwachung von Variablenänderungen beenden möchten, können Sie die Funktion deregister() aufrufen:
const deregister = App.onVariableChange('<app_variable_name>', value => {
  console.log("Latest value: ", value);
});

// To stop listening for value changes, the deregister function can be invoked like below
deregister();const deregister = App.onVariableChange('<app_variable_name>', value => {
  console.log("Latest value: ", value);
});

// To stop listening for value changes, the deregister function can be invoked like below
deregister();
Hinweis:
  • Der Listener wird gestartet, nachdem das benutzerdefinierte HTML-Steuerelement vollständig gerendert wurde. Wenn sich ein Variablenwert ändert, bevor das benutzerdefinierte HTML-Steuerelement initialisiert wird, wird der aktualisierte Wert nicht erfasst.

    Um den neuesten Variablenwert abzurufen, rufen Sie getVariable() auf, bevor Sie onVariableChange() aufrufen.
  • Das HTML-Steuerelement und die darin enthaltenen Funktionen werden initialisiert, nachdem das Steuerelement zur Laufzeit angezeigt wurde.

Variablentypen

App-Variablentyp

Beispielantwort von Variablenfunktionen

Text (String)

"Hello world"

UInt64 (Int)

100

Decimal number

50.25

True/False (Boolean)

True

DateOnly

2024-01-02

(Format: JJJJ-MM-TT)

DateTimeOffset

2024-01-06T09:54:41.9170000Z

(Äquivalentes JS-Format: ISO-String des Datumsobjekts)

AppsFile – Wert eines Dateiauswahlsteuerelements JS-Dateiobjekt
docs image
AppsFile – Wert, der aus der URL erstellt wurde

Zum Beispiel:

new AppsFile("https://image.jpg")new AppsFile("https://image.jpg")

Dateiobjekt:

{FileSize: 0, Name: "", URL: "https://image.jpg", __infoType: "$metadata"}{FileSize: 0, Name: "", URL: "https://image.jpg", __infoType: "$metadata"}

GUID

"5637F7DB-391D-4C8B-805D-0A918531CA3E"

List(Of string)["Banana", "Kiwi", "Apple", "Lemon"]
ListSource(Of <Entity>)
{
  data: [{Name: "John", Age: "28", ...},{Name: "Kane", Age: "48", ...}],
  totalRecords: 2
}{
  data: [{Name: "John", Age: "28", ...},{Name: "Kane", Age: "48", ...}],
  totalRecords: 2
}
<Entity> (Single entity row)
{
  Name: "John", 
  Age: "28", 
  ...
}{
  Name: "John", 
  Age: "28", 
  ...
}
ListSource(Of <Choiceset>)
{
  data: [{DisplayName: "Male", Id: "00F3372D-3920-EC11-AE72-0003FFBA1E91", Name: "Male", ...}, {DisplayName: "Female", Id: "01F3372D-3920-EC11-AE72-0003FFBA1E91", Name: "Female", ...}],
  totalRecords: 2
}{
  data: [{DisplayName: "Male", Id: "00F3372D-3920-EC11-AE72-0003FFBA1E91", Name: "Male", ...}, {DisplayName: "Female", Id: "01F3372D-3920-EC11-AE72-0003FFBA1E91", Name: "Female", ...}],
  totalRecords: 2
}
Datatable
[{From: 'Ahmedabad', To: 'Azua', ...},{From: 'banglore', To: 'Dominican Republic',...},...][{From: 'Ahmedabad', To: 'Azua', ...},{From: 'banglore', To: 'Dominican Republic',...},...]

Best Practices für benutzerdefiniertes HTML

  • Nehmen Sie aufgrund des clientseitigen Zugriffs keine vertraulichen Daten in das benutzerdefinierte HTML-Steuerelement auf.

  • Verwenden Sie die Tags <html> und <head> nicht im HTML-Editor, da der Code automatisch innerhalb der <body> -Tags angehängt wird.
  • Fügen Sie CDN-URLs externer Ressourcen wie Bootstrap, jQuery oder anderer JavaScript SDKs auf der Registerkarte Externe Ressourcen hinzu.

  • Wenn Sie die Überwachung der Variablenänderung beenden möchten, verwenden Sie die Funktion deregister() .
  • Vermeiden Sie große Datenschleifen, um eine Verlangsamung der Anwendung zu verhindern und die Reaktion des Steuerelements aufrechtzuerhalten.

  • Minimieren Sie die Verwendung von DOM-Elementen so weit wie möglich: Erstellen Sie DOM-Elemente nur bei Bedarf und entfernen Sie sie, wenn sie veraltet sind.

  • Verwenden Sie für große Datasets unendliches oder virtuelles Scrollen anstelle von Standard-Scroll.

  • Erstellen und pflegen Sie einen bereinigten, optimierten und Redundanz-freien Code.

Funktionseinschränkungen

  • Benutzerdefiniertes HTML bietet keine Möglichkeit, Kontrollregeln auszulösen.

  • Das Verbinden des Steuerelements mit Apps erfolgt nur mithilfe der Variablenfunktionen: getVariable(), setVariable(), onVariableChange().
  • Kopieren des vollständigen Steuerelements oder Duplizieren der Seite mit einem Steuerelement. Das Steuerelement wird nur mit den Eigenschaften auf der Registerkarte „ Stil ‟ eingefügt. Sie müssen den Code für HTML, CSS und JavaScript manuell einfügen.

  • Um auf Prozess- oder Warteschlangendaten zuzugreifen, müssen Sie für jede Prozess- oder Warteschlangeneigenschaft eine Variable zuweisen.

  • Die Abmessungen des HTML-Steuerelements werden nicht dynamisch an die Anzeige von Popups oder Dropdownmenüs angepasst. Daher müssen Sie die Größe des HTML-Steuerelements an diese Menüs anpassen.

  • Sie können während der Entwurfszeit nicht mit dem HTML-Steuerelement interagieren.

  • Die Funktionen setVariable(), getVariable() und onVariableChange() werden nur zur Laufzeit ausgeführt.
  • Änderungen an Variablennamen oder Variablenlöschungen werden nicht automatisch in den Code-Editoren widergespiegelt. Sie müssen den Code manuell mit den aktuellen Variablen aktualisieren.

  • Variablen, die Dateien aus dem HTML-Steuerelement speichern, können nicht in der Regel Datei in Speicher-Bucket hochladen oder zum Ausfüllen der Dateitypfelder von Data Service-Entitäten verwendet werden.

  • The control can communicate with other UiPath® components, such as Processes, Queues, or Storage Buckets, only through the use of variables.

  • Vorverarbeiteter CSS-Code, der LESS oder SCSS verwendet, ist mit dem HTML-Steuerelement nicht kompatibel.

  • Die folgenden APIs schlagen bei der Verwendung aufgrund von Sicherheitsbedenken im Hintergrund fehl:

    • Herunterladen mithilfe des Attributs download
    • Öffnen von Modalitäten mit Window.alert(), Window.confirm(), Window.print(), Window.prompt().
    • Zeiger- und Ausrichtungssperre

    • Navigieren durch den Browserkontext der obersten Ebene

    • Eingabe des Vollbildmodus mit requestFullscreen()
    • Bildschirmaufnahme mit MediaDevices.getDisplayMedia()
    • Zugriff auf Kamera oder Mikrofon mit MediaDevices.getUserMedia()
    • Anfordern von Zahlungen

    • Zugriff auf den Speicherort mit navigator.geolocation()
    • Freigeben von Daten mit navigator.share()

Debuggen des Codes eines benutzerdefinierten HTML-Steuerelements

Hinzufügen und Filtern von Konsolenprotokollen eines benutzerdefinierten HTML-Steuerelements

  1. Fügen Sie im JavaScript-Editor einen console.log() hinzu.
  2. Öffnen Sie in Ihrer Apps Studio-Sitzung die Browserkonsole, indem Sie F12 drücken und dann die Registerkarte Konsole auswählen.
  3. Aktivieren Sie in den Konsoleneinstellungen das Kontrollkästchen Nur ausgewählter Kontext .
  4. Wählen Sie in der Dropdownliste JavaScript-Kontext oben auf der Konsolenseite die Option html-control-base.html für das gewünschte HTML-Steuerelement aus.

Die Protokolle aus dem ausgewählten Steuerelement werden in der Konsole angezeigt.

Weitere Informationen finden Sie im Video:

Haltepunkte hinzufügen

  1. Fügen Sie im JavaScript-Editor einen console.log() hinzu.
  2. Öffnen Sie in Ihrer Apps Studio-Sitzung die Browserkonsole, indem Sie F12 drücken und dann die Registerkarte Konsole auswählen.
  3. Klicken Sie auf der rechten Seite des Protokolls auf die VM-Meldung.

Der Debugger wird geöffnet. Wählen Sie Ihren Haltepunkt aus, indem Sie auf die gewünschte Zeilennummer klicken.

Weitere Informationen finden Sie im Video:

Demos

Benutzerdefiniertes HTML: Erstellen von Diagrammen

Einleitung

Diese App zeigt, wie verschiedene Diagrammtypen mithilfe von JavaScript-Bibliotheken wie d3.js oder Chart.js erstellt werden.

Demo-App – selbst ausprobieren

Um die interaktiven Diagramme selbst auszuprobieren, verwenden Sie die Demo-App.

Demo-App – Verwendungsanweisungen

  1. In UiPath® Apps, create a new app and import the downloaded demo app.
  2. Zeigen Sie eine Vorschau Ihrer App an, um mit allen Diagrammtypen zu interagieren.

Benutzerdefiniertes HTML: Erstellen eines interaktiven Kreisdiagramms mithilfe von Variablenfunktionen

Einleitung

This app combines entities, Custom HTML, and Edit Grid controls to display an interactive pie chart. The interactivity is activated by selecting an option from a dropdown menu, which changes the pie chart sections and the records in the edit grid. Subsequently, clicking on a chart section updates data in the edit grid.

Demo-App – selbst ausprobieren

Um das interaktive Kreisdiagramm selbst auszuprobieren, verwenden Sie die Demo-App oder folgen Sie dem Verfahren.

Demo-App – Verwendungsanweisungen

  1. Zeigen Sie eine Vorschau der Demo-App an.
  2. Wählen Sie in der Dropdownliste „Tickets nach Kundennamen filtern“ eine Option aus. Die Gesamtzahl der Tickets, die Darstellung des Kreisdiagramms und die Daten im Bearbeitungsraster sollten sich ändern.
  3. Zeigen Sie mit der Maus auf ein Diagrammsegment. Der Tooltip zeigt den Kategorienamen und die Ticketanzahl an.
  4. Klicken Sie auf einen Diagrammbereich. Im Bearbeitungsraster werden die Datensätze für die ausgewählte Kategorie angezeigt.

Verfahren

Um zu sehen, wie Entitäten und Variablen im benutzerdefinierten HTML-Steuerelement verwendet werden, laden Sie die folgenden App-Dateien auf Ihre lokale Maschine herunter:

Führen Sie nach dem Herunterladen die folgenden Schritte aus:

  1. In UiPath® Data Service, click Import Schema:
    1. Wählen Sie die zuvor heruntergeladene ticket_entities_schema.json -Datei aus.
    2. Aktivieren Sie auf der Registerkarte Entitäten die Kontrollkästchen Tickets und Ticketquelle.
    3. Wechseln Sie zur Registerkarte Auswahlsätze und aktivieren Sie die Kontrollkästchen Kontinente und Reibungsebene.
    4. Klicken Sie auf Importieren.
  2. In UiPath® Data Service, select the Tickets Source entity:
    1. Klicken Sie auf Daten importieren.
    2. Wählen Sie die zuvor heruntergeladene ticketsource_entity_data.csv -Datei aus und klicken Sie dann auf Öffnen.
    3. Wechseln Sie zur Registerkarte Daten , um die hochgeladenen Datensätze anzuzeigen.
  3. In UiPath® Data Service, select the Tickets entity:
    1. Klicken Sie auf Daten importieren.
    2. Wählen Sie die zuvor heruntergeladene tickets_entity_data.csv -Datei aus und klicken Sie dann auf Öffnen.
    3. Daten für die Felder vom Typ Beziehung und Auswahlsatz werden nicht automatisch importiert. Sie müssen die Daten für diese Felder manuell ausfüllen.
    4. Wechseln Sie zur Registerkarte Daten . Aktualisieren Sie für jeden Ticketdatensatz die Werte für das Feld Quelle, indem Sie zufällig Chat, Telefon oder E-Mail auswählen.
    5. Aktualisieren Sie auf der Registerkarte Daten für jeden Ticketdatensatz die Werte für das Feld „Reaktion“, indem Sie zufällig 1, 2 oder 3 auswählen.
  4. Um die App-Datei zu importieren, führen Sie diesen Schritt aus und wechseln Sie dann zu Schritt 14.
    In UiPath® Apps, create a new VB app:
    1. Klicken Sie auf Aus Datei importieren.
    2. Wählen Sie die zuvor heruntergeladene CustomHTMLPieChart_DemoApp.uiapp -Datei aus und klicken Sie dann auf Öffnen.
    3. Um die Fehler zu beheben, ersetzen Sie die Entität in der importierten App durch die Entität, die Sie zuvor in den Schritten 2 und 3 erstellt haben.
    4. Wählen Sie in der importierten App das Dropdown-Steuerelement mit dem Namen „CustomFilterDropdown“ aus, öffnen Sie den Ausdrucks-Editor für die Eigenschaft „Listenquelle“ und speichern Sie sie dann.
  5. Um die App von Grund auf zu erstellen, führen Sie die Schritte 5 bis 14 aus.
    In UiPath® Apps, create a new VB app.
  6. Verweisen Sie in Ihrer App auf die Entitäten , die in den Schritten 1 bis 3 erstellt wurden.
  7. Erstellen Sie die folgenden Variablen basierend auf Data Service-Entitäten:

    Variablenname

    Typ

    Referenzierte Entität

    allTickets

    Listenquelle

    Tickets

    filteredTicketListSource

    Listenquelle

    Tickets

    selectedSourceType

    Text

    -

    ticketSourceTypes

    Listenquelle

    Ticketquelle

  8. Fügen Sie Ihrer App ein Dropdown -Steuerelement hinzu und benennen Sie es in „CustomerFilterDropdown“ um:
    1. Benennen Sie das Feld Beschriftung in „Tickets nach Kundenname filtern“ um.
    2. Öffnen Sie im Feld Listenquelle den Ausdrucks-Editor und schreiben Sie den folgenden VB-Ausdruck:
      New ListSource(of String)With{.data = allTickets.data.Select(Function(x) x.CustomerName).Distinct.ToList}New ListSource(of String)With{.data = allTickets.data.Select(Function(x) x.CustomerName).Distinct.ToList}
    3. Wechseln Sie zur Registerkarte Ereignisse und klicken Sie dann auf Regel erstellen.
    4. Fügen Sie die Regel Wert festlegen mit der folgenden Eingabe hinzu:
      Festzulegendes Element
      filteredTicketListSourcefilteredTicketListSource
      Wert
      Fetch(of Tickets)(createFilterGroup(New QueryFilter(){addFilter(If((MainPage.CustomerFilterDropdown.SelectedItem Is Nothing),"","CustomerName"), "=", MainPage.CustomerFilterDropdown.SelectedItem)}, Nothing, 0), Nothing, Nothing, Nothing, New ExpansionFieldOption(){addExpansionFieldOption("Source", New String(){"Id","Source"}), addExpansionFieldOption("CreatedBy", New String(){"Id","Name"}), addExpansionFieldOption("UpdatedBy", New String(){"Id","Name"})})Fetch(of Tickets)(createFilterGroup(New QueryFilter(){addFilter(If((MainPage.CustomerFilterDropdown.SelectedItem Is Nothing),"","CustomerName"), "=", MainPage.CustomerFilterDropdown.SelectedItem)}, Nothing, 0), Nothing, Nothing, Nothing, New ExpansionFieldOption(){addExpansionFieldOption("Source", New String(){"Id","Source"}), addExpansionFieldOption("CreatedBy", New String(){"Id","Name"}), addExpansionFieldOption("UpdatedBy", New String(){"Id","Name"})})
  9. Fügen Sie Ihrer App ein Header -Steuerelement hinzu und benennen Sie es in „TicketCountHeader“ um:
    1. Öffnen Sie im Feld Text den Ausdrucks-Editor und schreiben Sie den folgenden VB-Ausdruck:
      (filteredTicketListSource.totalRecords).ToString +" Tickets"(filteredTicketListSource.totalRecords).ToString +" Tickets"
  10. Fügen Sie Ihrer App ein benutzerdefiniertes HTML -Steuerelement hinzu und benennen Sie es in „Diagramm“ um:
    1. Öffnen Sie den Code-Editor und ersetzen Sie den Platzhalterinhalt durch die folgenden Code-Snippets:

      Editor

      Code

      Nutzung

      HTML

      <script src="https://cdn.jsdelivr.net/npm/chart.js">
      </script>
      <div class="chartContainer">
        <canvas class="pieChart" id="myChart"></canvas>
      </div><script src="https://cdn.jsdelivr.net/npm/chart.js">
      </script>
      <div class="chartContainer">
        <canvas class="pieChart" id="myChart"></canvas>
      </div>

      Generiert eine JavaScript-Diagrammvorlage aus einer Open-Source-Bibliothek und wendet die Stilklassen auf dieses Diagramm an.

      CSS

      .chartContainer {
        height: 100%;
        background-color: #ffffff;
        font-family: Arial, Helvetica, sans-serif;
        font-weight: bold;
        color: #526069;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      
      .pieChart {
        width: 50%;
        max-width: 400px;
        max-height: 400px;
      }.chartContainer {
        height: 100%;
        background-color: #ffffff;
        font-family: Arial, Helvetica, sans-serif;
        font-weight: bold;
        color: #526069;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      
      .pieChart {
        width: 50%;
        max-width: 400px;
        max-height: 400px;
      }

      Definiert zwei Stilklassen: .chartContainer und .pieChart.

      JavaScript

      // Create an object to store counts
      var counts = {"Email": 0, "Phone": 0, "Chat": 0};
      
      // Mock data to see the chart in designer, You can assign it with empty array if you don't want to see chart in designer
      var Tickets = [
        {Source: { Source: 'Phone' }},
      ];
      
      // Function to count the number of tickets per Source
      function countTickets(tickets) {
        counts = {"Email": 0, "Phone": 0, "Chat": 0};   // Reset counts to zero
        for (var i = 0; i < tickets.length; i++) {
          counts[tickets[i].Source.Source]++;
        }
      }
      
      countTickets(Tickets); // Count tickets in the initial data
      
      // Create a Chart
      var ctx = document.getElementById('myChart').getContext('2d');
      var myChart = new Chart(ctx, {
        type: 'pie',
        data: {
          labels: ['Email', 'Phone', 'Chat'],
          datasets: [{
            label: '# of Tickets',
            data: [counts["Email"], counts["Phone"], counts["Chat"]],
            backgroundColor: [
              'rgba(255, 99, 132, 0.2)',
              'rgba(54, 162, 235, 0.2)',
              'rgba(255, 206, 86, 0.2)'
            ],
            borderColor: [
              'rgba(255, 99, 132, 1)',
              'rgba(54, 162, 235, 1)',
              'rgba(255, 206, 86, 1)'
            ],
            borderWidth: 1
          }]
        },
        options: {
          onClick: function(evt, elements) {
            if (elements.length) {
              var chartElement = elements[0];
              var label  = this.data.labels[chartElement.index];
              OutputSource = label;
              console.log(OutputSource); // You can see the stored value in browser's console on each click
              App.setVariable('selectedSourceType', OutputSource);
            }
          }
        }
      });
      
      // Function to update chart's data
      function updateChart(data) {
        NewTickets = data;
          // New data to update the chart
          countTickets(NewTickets);
          myChart.data.datasets[0].data = [counts["Email"], counts["Phone"], counts["Chat"]];
          myChart.update();
      
      let sourceWithData = Object.keys(counts).find(ticketSource => {
        return counts[ticketSource] > 0;
      });
      if(sourceWithData) {
        App.setVariable('selectedSourceType', sourceWithData);
      }
      }
      
      //Listen for updates to the ticket data and update chart
      async function registerOnChangeEvent() {
        App.onVariableChange('filteredTicketListSource',(listSource) => {
          updateChart(listSource.data);
        })
        const listSource = await App.getVariable('filteredTicketListSource');
        if(listSource?.data?.length > 0) {
          updateChart(listSource.data);
        }
      }
      
      registerOnChangeEvent();// Create an object to store counts
      var counts = {"Email": 0, "Phone": 0, "Chat": 0};
      
      // Mock data to see the chart in designer, You can assign it with empty array if you don't want to see chart in designer
      var Tickets = [
        {Source: { Source: 'Phone' }},
      ];
      
      // Function to count the number of tickets per Source
      function countTickets(tickets) {
        counts = {"Email": 0, "Phone": 0, "Chat": 0};   // Reset counts to zero
        for (var i = 0; i < tickets.length; i++) {
          counts[tickets[i].Source.Source]++;
        }
      }
      
      countTickets(Tickets); // Count tickets in the initial data
      
      // Create a Chart
      var ctx = document.getElementById('myChart').getContext('2d');
      var myChart = new Chart(ctx, {
        type: 'pie',
        data: {
          labels: ['Email', 'Phone', 'Chat'],
          datasets: [{
            label: '# of Tickets',
            data: [counts["Email"], counts["Phone"], counts["Chat"]],
            backgroundColor: [
              'rgba(255, 99, 132, 0.2)',
              'rgba(54, 162, 235, 0.2)',
              'rgba(255, 206, 86, 0.2)'
            ],
            borderColor: [
              'rgba(255, 99, 132, 1)',
              'rgba(54, 162, 235, 1)',
              'rgba(255, 206, 86, 1)'
            ],
            borderWidth: 1
          }]
        },
        options: {
          onClick: function(evt, elements) {
            if (elements.length) {
              var chartElement = elements[0];
              var label  = this.data.labels[chartElement.index];
              OutputSource = label;
              console.log(OutputSource); // You can see the stored value in browser's console on each click
              App.setVariable('selectedSourceType', OutputSource);
            }
          }
        }
      });
      
      // Function to update chart's data
      function updateChart(data) {
        NewTickets = data;
          // New data to update the chart
          countTickets(NewTickets);
          myChart.data.datasets[0].data = [counts["Email"], counts["Phone"], counts["Chat"]];
          myChart.update();
      
      let sourceWithData = Object.keys(counts).find(ticketSource => {
        return counts[ticketSource] > 0;
      });
      if(sourceWithData) {
        App.setVariable('selectedSourceType', sourceWithData);
      }
      }
      
      //Listen for updates to the ticket data and update chart
      async function registerOnChangeEvent() {
        App.onVariableChange('filteredTicketListSource',(listSource) => {
          updateChart(listSource.data);
        })
        const listSource = await App.getVariable('filteredTicketListSource');
        if(listSource?.data?.length > 0) {
          updateChart(listSource.data);
        }
      }
      
      registerOnChangeEvent();

      Definiert die Variablenfunktionen und fügt dem Diagramm die Interaktivität hinzu.

    2. Klicken Sie auf Speichern.
    3. Wechseln Sie zur Registerkarte Stil und legen Sie die folgende Größe fest:
      Width1000 px
      Height400 px
  11. Fügen Sie Ihrer App ein Header -Steuerelement hinzu und benennen Sie es in „sourceTypeHeader“ um:
    1. Öffnen Sie im Feld Text den Ausdrucks-Editor und schreiben Sie den folgenden VB-Ausdruck:
      "Tickets created through " & selectedSourceType"Tickets created through " & selectedSourceType
  12. Fügen Sie Ihrer App ein Bearbeitungsrastersteuerelement hinzu und benennen Sie es in „TicketlisteNachTyp“ um.
    1. Öffnen Sie im Feld Datenquelle den Ausdrucks-Editor und schreiben Sie den folgenden VB-Ausdruck:
      Fetch(of Tickets)(createFilterGroup(Nothing, New FilterGroup(){createFilterGroup(New QueryFilter(){addFilter(MainPage.TicketsListByType.SearchColumn, "contains", MainPage.TicketsListByType.SearchTerm)}, Nothing, 0), createFilterGroup(New QueryFilter(){addFilter("Source.Source", "=", selectedSourceType), addFilter("CustomerName", "contains", MainPage.CustomerFilterDropdown.SelectedItem)}, Nothing, 0)}, 0), New PaginationProps(MainPage.TicketsListByType.PageStart, MainPage.TicketsListByType.PageLimit), New SortOption(){addSortOption(MainPage.TicketsListByType.SortColumn, Not(Not(MainPage.TicketsListByType.isDescending)))}, Nothing, New ExpansionFieldOption(){addExpansionFieldOption("Source", New String(){"Id","Source"}), addExpansionFieldOption("CreatedBy", New String(){"Id","Name"}), addExpansionFieldOption("UpdatedBy", New String(){"Id","Name"})})Fetch(of Tickets)(createFilterGroup(Nothing, New FilterGroup(){createFilterGroup(New QueryFilter(){addFilter(MainPage.TicketsListByType.SearchColumn, "contains", MainPage.TicketsListByType.SearchTerm)}, Nothing, 0), createFilterGroup(New QueryFilter(){addFilter("Source.Source", "=", selectedSourceType), addFilter("CustomerName", "contains", MainPage.CustomerFilterDropdown.SelectedItem)}, Nothing, 0)}, 0), New PaginationProps(MainPage.TicketsListByType.PageStart, MainPage.TicketsListByType.PageLimit), New SortOption(){addSortOption(MainPage.TicketsListByType.SortColumn, Not(Not(MainPage.TicketsListByType.isDescending)))}, Nothing, New ExpansionFieldOption(){addExpansionFieldOption("Source", New String(){"Id","Source"}), addExpansionFieldOption("CreatedBy", New String(){"Id","Name"}), addExpansionFieldOption("UpdatedBy", New String(){"Id","Name"})})
  13. Wechseln Sie für die Hauptseite zur Registerkarte Ereignisse und klicken Sie dann auf Regel erstellen.
    1. Fügen Sie eine Regel Wert festlegen mit der folgenden Eingabe hinzu:
      Festzulegendes Element
      allTicketsallTickets
      WertÖffnen Sie den Abfragegenerator, wählen Sie die Entität Tickets aus und klicken Sie dann auf Speichern.
    2. Fügen Sie eine zweite Regel Wert festlegen mit der folgenden Eingabe hinzu:
      Festzulegendes Element
      filteredTicketListSourcefilteredTicketListSource
      WertÖffnen Sie den Abfragegenerator, wählen Sie die Entität Tickets aus und klicken Sie dann auf Speichern.
  14. Zeigen Sie eine Vorschau der App an, wählen Sie eine Option in der Dropdownliste aus und sehen Sie, wie das Diagramm aktualisiert wird. Klicken Sie auf einen Diagrammabschnitt und beachten Sie, dass das Bearbeitungsraster mit den Daten aus dem ausgewählten Abschnitt aktualisiert wird.

Benutzerdefiniertes HTML: Erstellen von Datums-/Zeitauswahlen

Einleitung

Diese App zeigt, wie eine benutzerdefinierte Datums-/Uhrzeitauswahl erstellt wird.

Demo-App – selbst ausprobieren

Um die Datums-/Uhrzeitauswahl selbst auszuprobieren, verwenden Sie die Demo-App.

Demo-App – Verwendungsanweisungen

  1. In UiPath® Apps, create a new app and import the downloaded demo app.
  2. Zeigen Sie eine Vorschau Ihrer App an, um mit der Datums-/Uhrzeitauswahl zu interagieren.

Benutzerdefiniertes HTML: Erstellen von Kennwortfeldern

Einleitung

Diese App zeigt, wie Kennwortfelder erstellt werden.

Demo-App – selbst ausprobieren

Um das Kennwortfeld selbst auszuprobieren, verwenden Sie die Demo-App.

Demo-App – Verwendungsanweisungen

  1. In UiPath® Apps, create a new app and import the downloaded demo app.
  2. Zeigen Sie eine Vorschau Ihrer App an, um mit dem Kennwortfeld zu interagieren.

Benutzerdefiniertes HTML: Erstellen von Signatureingabefeldern

Einleitung

Diese App zeigt, wie Signatureingabefelder erstellt werden.

Demo-App – selbst ausprobieren

Um die Signatureingabe selbst auszuprobieren, verwenden Sie die Demo-App.

Demo-App – Verwendungsanweisungen

  1. In UiPath® Apps, create a new app and import the downloaded demo app.
  2. Möglicherweise stellen Sie einige Fehler fest. Um sie zu beheben, ersetzen Sie den referenzierten Speicher-Bucket „Demo-App“ durch einen in Ihrem Mandanten.
  3. Zeigen Sie eine Vorschau der App an, um mit dem Signatureingabefeld zu interagieren.

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
UiPath Logo weiß
Vertrauen und Sicherheit
© 2005-2024 UiPath. All rights reserved.