PiB Anwendung für cardo

Es existiert in der cardo API eine Basisklasse, die die Erstellung von auf PiB basierten Anwendungen vereinfacht.

Die vorliegende Beschreibung geht dabei nicht weiter auf die Erstellung einer cardo Anwendung ein.

Weiterführende Links:

Beispielimplementierung

Client (TypeScript)

export class MyApp extends IduIT.Cardo4.Apps.ApplicationBase
{
	/**
	* Erstellt eine Instanz der Anwendung.
	* @internal
	*/
	public constructor()
	{
		MyApp.__appContext =  cardo.Core.Api.Applications.PiBBased.getPiBAppContext('IduIT.App.Application.MyApp');

		MyApp.__appContext.prepareApplication(toDispose => this._disposeWithThis(toDispose));
			
		super();
	}

	/**
	* Der Anwendungs-Kontext für PiB spezifische Funktionen, als anwendungsweites Singleton
	*/
	public static get appContext(): IduIT.cardo.Core.Api.Applications.PiBBased.IPiBApplicationContext
	{
		return MyApp.__appContext;
	}

	private static __appContext: IduIT.cardo.Core.Api.Applications.PiBBased.IPiBApplicationContext;
}

Server (c#)

  • Ableiten von der Klasse cardo.Core.Api.Applications.PiBBased.PiBApplicationBase<MyApp>

  • Implementierung der abstrakten Methoden

  • RegisterBaseApplicationScripts in RegisterApplicationScripts aufrufen

  • Inkludieren des PIB-Sql-Update-Dokuments

/// <summary>
/// Anwendungsvorlage
/// </summary>
[IduIT.Core.Web.Ajax.AjaxClass("IduIT.App.Application.MyAppRemote")]
internal sealed partial class MyApp : cardo.Core.Api.Applications.PiBBased.PiBApplicationBase<MyApp>,
	IduIT.cardo.Core.Api.Applications.ICardoManagedApplicationWithSystemSettings<MyAppConfiguration>,
		IduIT.cardo.Core.Applications.IStandaloneClientApplicationDefinition,
		IduIT.cardo.Core.Api.Applications.ICardoManagedApplicationWithSQLUpdateSupport
{
	/// <summary>
	/// Registriert Scripte in der Seite, die für die Anwendungsinstanz benötigt werden.
	/// </summary>
	public void RegisterApplicationScripts(ResourceCollector resourceCollector)
	{
		IduIT.Core.PropertyModel.Registrator.RegisterTypeAsModel(resourceCollector,
			typeof(Objects.MyObjects)
			);

		//Aufruf zu PiBApplicationBase
		RegisterBaseApplicationScripts(resourceCollector);

		//weiter Js und CSS dieser Anwendung ...
	}
	/////////////////////////////////////////////////////////
	#region PiBApplicationBase
	/////////////////////////////////////////////////////////

	protected override IDataBaseHandler OpenDatabaseConnection()
	{
		return this.Settings.OpenDatabase();
	}
	protected override void InternalDispose()
	{
		//Nix zu tun hier
	}
	protected override int? DataEpsgCode()
	{
		return Settings.DataEpsg?.Code;
	}

	protected override string WebDAVVirtualRootFolderName => null;

	protected override string WebSocketRawMessageAndTagName => "Sample.Tag";

	protected override IMemberProvider TryCreatePiBMemberProvider()
	{
		return null;
	}

	/////////////////////////////////////////////////////////
	#endregion
	/////////////////////////////////////////////////////////
        
    public IEnumerable<ApplicationSqlUpdateDescription> GetSqlUpdateDescriptionInstances()
	{
			//einfach die Datei aus der Resource rausgeben
			System.Xml.XmlDocument sqlFile = new System.Xml.XmlDocument();

#if DEBUG
			sqlFile.Load(AssemblySourceInfo.SourceCodeBaseFolder + @"\Application\SqlUpdate.xml");
#else
			sqlFile.LoadXml(Properties.Resources.SqlUpdate);
#endif

			yield return new ApplicationSqlUpdateDescription(
				Settings.OpenDatabase(),
				IduIT.PiB.PibHandler.GetPIBSqlUpdateDocument(), "IDUITPIB_");

			yield return new ApplicationSqlUpdateDescription(
				Settings.OpenDatabase(),
				sqlFile);
	}
}

Zuletzt geändert: 22.04.2024 18:22:09 (erstmals erstellt 12.11.2020)