Skip to main content

Overview

The VenziaDatalinkService is the primary Angular service for opening and managing datalink dialogs in Alfresco Content App. It handles dialog initialization and error notifications.

Import

import { VenziaDatalinkService } from 'venzia-datalink';

Injectable

@Injectable({
  providedIn: 'root'
})

Constructor

constructor(
  private dialogRef: MatDialog,
  private notificationService: NotificationService
)
dialogRef
MatDialog
Angular Material dialog service for opening modal dialogs
notificationService
NotificationService
ADF notification service for displaying error messages

Methods

dataLinkDoc

Opens the datalink management dialog for a given node.
dataLinkDoc(node: NodeEntry): void
node
NodeEntry
required
The Alfresco node to manage datalinks for. Must have an entry with properties.

Behavior

  • Valid Node: Opens DatalinkDialogComponent with the node ID
  • Invalid Node: Shows error notification “DATALINK.MESSAGES.ERRORS.NO_PROPERTIES”
  • Dialog Configuration:
    • Width: 730px
    • Panel class: ‘aca-permissions-dialog-panel’
    • Data: { nodeId: node.entry.id }

Example

import { Component } from '@angular/core';
import { VenziaDatalinkService } from 'venzia-datalink';
import { NodeEntry } from '@alfresco/js-api';

@Component({
  selector: 'app-my-component',
  template: `
    <button (click)="openDatalink()">Edit Datalink</button>
  `
})
export class MyComponent {
  currentNode: NodeEntry;

  constructor(private datalinkService: VenziaDatalinkService) {}

  openDatalink() {
    this.datalinkService.dataLinkDoc(this.currentNode);
  }
}

Implementation Details

import { Injectable } from '@angular/core';
import { DatalinkDialogComponent } from '../dialogs/datalink-dialog/datalink-dialog.component';
import { MatDialog } from '@angular/material/dialog';
import { NotificationService } from '@alfresco/adf-core';
import { NodeEntry } from '@alfresco/js-api';

@Injectable({
  providedIn: 'root'
})
export class VenziaDatalinkService {
  constructor(
    private dialogRef: MatDialog,
    private notificationService: NotificationService
  ) {}

  dataLinkDoc(node: NodeEntry): void {
    if (node?.entry && node?.entry.properties) {
      this.dialogRef.open(DatalinkDialogComponent, {
        data: { nodeId: node.entry.id },
        panelClass: 'aca-permissions-dialog-panel',
        width: '730px'
      });
    } else {
      this.notificationService.showError('DATALINK.MESSAGES.ERRORS.NO_PROPERTIES');
    }
  }
}

Usage from ACA Extensions

This service is typically invoked from ACA extension actions:
import { VenziaDatalinkService } from 'venzia-datalink';

export function openDatalinkAction(
  context: any,
  datalinkService: VenziaDatalinkService
) {
  const node = context.selection.file;
  datalinkService.dataLinkDoc(node);
}

Error Handling

The service validates that:
  1. Node exists (node?.entry)
  2. Node has properties (node?.entry.properties)
If validation fails, it displays an error notification using the translation key DATALINK.MESSAGES.ERRORS.NO_PROPERTIES.

Dialog Configuration

The dialog opened by this service:
  • Uses Angular Material’s MatDialog
  • Applies custom panel class for styling
  • Passes the node ID as dialog data
  • Has a fixed width of 730px for consistent UX

Dependencies

  • @angular/core: Angular framework
  • @angular/material/dialog: Material dialog component
  • @alfresco/adf-core: ADF notification service
  • @alfresco/js-api: Alfresco JavaScript API types

See Also

Build docs developers (and LLMs) love