Stempel speichern

Hallo zusammen,

bietet ED in der Version 2.2.5 auch die Möglichkeit benutzerdefinierte Stempel zu speichern? Leider verschwinden die bei uns immer nach der erneuten Anmeldung in Enaio.

Beste Grüße,
Christian

Hallo @cschulze,

das ist jetzt wirklich ein grosser Zufall. Eine OS Tochter hatte mich um ein Beispiel gebeten. Dieses Beispiel speichert die Daten über eine Methode des AppConnectors benutzerspezifisch in die enaio Datenbank. Prinzipiell kann man dies natürlich auch anders umsetzten.

Hier das Beispiel:

/*
Dieser Interceptor speichert und lädt die Custom Stempel.
*/

class PersistStamps {
  stampsLoaded = false;
  tool = null;
  STORAGE_KEY_CUSTOM = "ed-stamps-custom";
  // Beim starten der Editor Instanz
  initEditorConfiguration(instance) {
    const { documentViewer } = instance.Core;

    // Stempel Tool holen
    this.tool = documentViewer.getTool('AnnotationCreateRubberStamp');

    // Immer speichern wenn ein Stempel hinzugefügt, geändert oder gelöscht wird
    this.tool.addEventListener('stampsUpdated', (stampData) => {
      this.saveStamps();
    });
    // Nachdem das Dokument geladen wurde, prüfen ob die gespecherten Stempel schon importiert wurden.
    documentViewer.addEventListener('documentLoaded', () => {
      // Nur einmal laden
      if(this.stampsLoaded){
        return;
      }

      this.loadStamps();
      this.stampsLoaded = true;
    
    });
  }

  // Methode zum speichern der Stempel
  async saveStamps() {
    // Nur speichern, wenn das erste Dokument geladen wurde
    if(!this.stampsLoaded){
      return;
    }

    const data = {
      type: 80,
      name: this.STORAGE_KEY_CUSTOM,
      value: JSON.stringify(this.tool.getCustomStamps()),
    };

    const response = await fetch(`/osrest/api/session/settings/custom/save`, {
      method: 'POST',
      body: JSON.stringify(data),
      headers: {
        'Content-Type': 'application/json',
      },
    });
    // Prüfen ob die Signature gespeichert werden konnte
    if (response.status == 204) {
      console.log('Stamps saved');
    } else {
      console.error(response);
    }
  }

  // Methode zum laden der Stempel
  async loadStamps() {
    const customStampsResponse = await fetch(`/osrest/api/session/settings/custom/load?type=80&name=${this.STORAGE_KEY_CUSTOM}` );
    // Prüfen ob das laden erfolgreich war
    if (customStampsResponse.status == 200) {
      const customStamps = await customStampsResponse.json();
      if (customStamps.value) {
        // Import der Stempel in embedded documents
        const customStampsValue = JSON.parse(customStamps.value);
        await this.tool.setCustomStamps(customStampsValue);
        console.log('Custom Stamps loaded');
      }
    } else {
      console.error(response);
    }
  }
}

// Registrierung des Interceptors
window.ed.registerInterceptor(new PersistStamps());

Hallo @uw ,
besten Dank für die schnelle Rückmeldung.
Das sieht sehr gut aus.
Der Stempel wird jedoch nicht richtig gespeichert.
Bei uns wird nur der Hintergrund gespeichert, aber der Stempeltext ist nach einem Neustart des Enaio-Client wieder verschwunden.

Ich kann aber keine Fehlermeldungen in den Logs finden, die hier vielleicht weiterhelfen könnten.

Beste Grüße,
Christian Schulze

Hallo @uw
ich hoffe Sie sind erfolgreich in das neue Jahr gestartet :slight_smile:
Ich habe mich mit dem Thema noch einmal auseinander gesetzt.
Dabei ist mir aufgefallen, dass das Problem an der Schriftfarbe liegt.
Alle Stempel die ich erstelle, welche mit weißer Schrift versehen sind, bei denen wird die Schrift nicht gespeichert und nach Client-Neustart nur der gewählte Hintergrund angezeigt.
Erstelle ich einen Stempel mit einer anders farbigen Schriftart, wird dieser korrekt gespeichert und kann immer wieder verwendet werden.

Gruß,
Christian

Hallo @cschulze, vielen Dank für das Update. Ich nehme das gerne als Testfall auf und hoffe, dass wir uns dazu in der nächsten Woche äussern können.