view Applications/Samples/Web/simple-viewer-single-file.ts @ 508:7105a0bad250 bgo-commands-codegen

- Added HandleSerializedMessage to IStoneApplication (empty impl) - Split UpdateWebApplication with "WithString" and "WithSerializedMessage" variants - Due to the modules in TS, globals are now unallowed and the callbacks from C++ to JS are stored in the "window" instance - Split UpdateStoneApplicationStatusFromCpp with "WithString" and "WithSerializedMessage" variants - Split NotifyStatusUpdateFromCppToWeb with "WithString" and "WithSerializedMessage" variants - SendMessageToStoneApplication (C++ global) has been split into SendSerializedMessageToStoneApplication and SendCommandToStoneApplication - In WasmPlatformApplicationAdapter: HandleMessageFromWeb becomes HandleCommandFromWeb - In WasmPlatformApplicationAdapter: added HandleSerializedMessageFromWeb - stonegentool now handles the "json" primitive type (used, a.o., in the VSOL "EditInstance" message) - Fixed indentation and added json serialization overloads in the stonegentool templates - Added test of the json primitive type to testWasmIntegrated (in Resources/CodeGeneration) - Adapted testWasmIntegrated (in Resources/CodeGeneration) to the changes above
author Benjamin Golinvaux <bgo@osimis.io>
date Wed, 06 Mar 2019 10:14:59 +0100
parents 5055031f4a06
children 97a16b694321
line wrap: on
line source

import wasmApplicationRunner = require('../../../Platforms/Wasm/wasm-application-runner');

wasmApplicationRunner.InitializeWasmApplication("OrthancStoneSimpleViewerSingleFile", "/orthanc");

function SelectTool(toolName: string) {
    var command = {
        command: "selectTool",
        args: {
            toolName: toolName
        }
    };
    wasmApplicationRunner.SendMessageToStoneApplication(JSON.stringify(command));

}

function PerformAction(commandName: string) {
    var command = {
        command: commandName,
        commandType: "simple",
        args: {}
    };
    wasmApplicationRunner.SendMessageToStoneApplication(JSON.stringify(command));
}

//initializes the buttons
//-----------------------
// install "SelectTool" handlers
document.querySelectorAll("[tool-selector]").forEach((e) => {
    console.log(e);
    (e as HTMLInputElement).addEventListener("click", () => {
        console.log(e);
        SelectTool(e.attributes["tool-selector"].value);
    });
});

// install "PerformAction" handlers
document.querySelectorAll("[action-trigger]").forEach((e) => {
    (e as HTMLInputElement).addEventListener("click", () => {
        PerformAction(e.attributes["action-trigger"].value);
    });
});

// this method is called "from the C++ code" when the StoneApplication is updated.
// it can be used to update the UI of the application
function UpdateWebApplicationWithString(statusUpdateMessage: string) {
  console.log(statusUpdateMessage);
  
  if (statusUpdateMessage.startsWith("series-description=")) {
      document.getElementById("series-description").innerText = statusUpdateMessage.split("=")[1];
  }
}

function UpdateWebApplicationWithSerializedMessage(statusUpdateMessageString: string) {
  console.log("updating web application with serialized message: ", statusUpdateMessageString);
  console.log("<not supported in the simple viewer (single file)!>");
}

// make it available to other js scripts in the application
(<any> window).UpdateWebApplicationWithString = UpdateWebApplicationWithString;

(<any> window).UpdateWebApplicationWithSerializedMessage = UpdateWebApplicationWithSerializedMessage;