• Quick Start
  • Booting
  • Platform
  • Portals
  • References
    • API Reference TOI3
    • IIP Reference
  • Resources
ARRIS Enterprises, Inc. Confidential Information

Asset poster page

This page shows how to use the asset database to download and assign a poster to a DVR asset.


var assetOperationManager = null;
var storageOperationManager = null;
var selectedAsset = 0;
var downloadAssetId = 0;
var downloadFile = "";
var assetIds = new Array();

function onLoad(){
    // Add the npruntime TOI/JS plugin
    var html = document.createElement("embed");
    html.id = "toiplugin";
    html.type = "application/x-kreatv-toi";
    html.setAttribute("hidden", "true");
    document.body.appendChild(html);
    document.getElementById(html.id).id;

    var assetlist = document.createElement("div");
    assetlist.setAttribute( "id", "assetlist" );
    document.body.appendChild(assetlist);

    assetOperationManager = toi.assetManagerService.getAssetOperationManager();
    storageOperationManager = toi.storageService.getStorageOperationManager();

    assetOperationManager.addEventListener(assetOperationManager.ON_OPERATION_RESULT, OnAssetOperationResult);
    storageOperationManager.addEventListener(storageOperationManager.ON_OPERATION_RESULT, OnStorageOperationResult);
    document.addEventListener("keydown", keyPress, false);

    // Refresh asset list
    GetAllAssets();
}

function updateHighlight()
{
  for (var i=0; i < assetIds.length; i++) {
    document.getElementById(i).style["border"] = "1px solid black";
  }
  document.getElementById(selectedAsset).style["border"] = "2px solid red";
}

function keyPress(event)
{
  if (event.keyIdentifier == "Right") {
    if (selectedAsset < assetIds.length - 1) {
      selectedAsset++;
    }
  }
  if (event.keyIdentifier == "Left") {
    if (selectedAsset > 0) {
      selectedAsset--;
    }
  }
  if (event.keyIdentifier == "Enter" || event.keyIdentifier == "Accept") {
    AssignPoster(assetIds[selectedAsset]);
  }
  updateHighlight();
}

// Import a new asset object, return an asset ID
function ImportAsset(uri)
{
  var assetId = toi.assetManagerService.createAsset(toi.assetManagerService.ASSET_IMAGE);
  var opId = this.assetOperationManager.createOperation("ImportAsset");
  toi.assetManagerService.importAsset(opId, assetId, uri,
                                      toi.assetManagerService.IMPORT_POLICY_MOVE);
  return assetId;
}

function OnAssetOperationResult(event)
{
  alert("Asset operation finished: " + event.operation.userData);
  if (event.operation.userData == "GetAllAssets") {
    // Asset search finished, refresh asset list.
    var result = toi.assetManagerService.getAssetInfoResult(event.operation.id, 17);
    var assetList = "<h1>Assets:</h1>";
    assetList += "<p>Navigate with left and right, assign poster with OK/Enter.</p>";
    assetList += "<table><tr>";
    for (var i = 0; i < result.objects.length; i++){
      var assetId = result.objects[i].assetId;
      assetIds[i] = assetId;
      var posterAssetIdList = toi.assetManagerService.getProperties(assetId, [toi.assetManagerService.PROPERTY_INFO_COVER]);
      var posterUri = "";
      if (posterAssetIdList.length > 0) {
        posterUri = toi.assetManagerService.getProperties(posterAssetIdList[0].value, [toi.assetManagerService.PROPERTY_SYSTEM_PLAYBACKURI])[0].value;
      }
      assetList += "<td id='" + i + "' style='border: 1px solid black; margin: 1em;'>"
      assetList += "<b>" + assetId + "</b><br/><img src='" + posterUri + "'/>";
      assetList += "</td>";
    }
    assetList += "</tr></table>";
    document.getElementById("assetlist").innerHTML = assetList;
    updateHighlight();
  }
  else if (event.operation.userData == "ImportAsset") {
    // Update asset list
    GetAllAssets();
  }
  // remove operation when done with it
  assetOperationManager.releaseOperation(event.operation.id);
}

function OnStorageOperationResult(event)
{
  alert("Storage operation finished: " + event.operation.userData);
  if (event.operation.userData == "DownloadPoster") {
    if (event.operation.state == assetOperationManager.OPERATION_COMPLETED) {
      // DownloadPoster is successful.
      var posterAssetId = ImportAsset(downloadFile);
      var properties = [{id: toi.assetManagerService.PROPERTY_INFO_COVER, value: posterAssetId},
                        {id: toi.assetManagerService.PROPERTY_INFO_CHILDREN, value: posterAssetId}];
      toi.assetManagerService.setProperties(downloadAssetId, properties);

    }
    else if (event.operation.state == assetOperationManager.OPERATION_PENDING) {
      alert("DownloadPoster is in progress.");
      return;
    }
    else {
      alert("DownloadPoster failed.");
    }
  }
  // remove operation when done with it
  storageOperationManager.releaseOperation(event.operation.id);
}

// Get all assets linked to the given directory. Filter out only DVR assets.
function GetAllAssets()
{
  var opId = assetOperationManager.createOperation("GetAllAssets");
  isPvr = toi.statics.ToiAssetManagerServiceQueryCondition.create(toi.assetManagerService.PROPERTY_SYSTEM_TYPE,
                                                                  toi.assetManagerService.EQUALS,
                                                                  toi.assetManagerService.ASSET_PVR + "");
  condList = [isPvr];
  propIds = new Array();
  sortConditions = new Array();
  toi.assetManagerService.runQuery(opId, condList, propIds, sortConditions);
}

// Download a poster, create a poster asset, and assign it to the given asset.
function AssignPoster(assetId)
{
  var opId = storageOperationManager.createOperation("DownloadPoster");
  var storageFile = toi.storageService.createFile("poster", toi.consts.ToiStorageFile.FILE_TYPE_TEMPORARY);
  downloadAssetId = assetId;
  downloadFile = storageFile.getUri();
  // Fetch a file, asynchronously. It will be written to the specified location.
  storageFile.download(opId, "http://location/1.jpg");
}

5.1.p5

Copyright (c) 2017 ARRIS Enterprises, LLC. All Rights Reserved. ARRIS Enterprises, LLC. Confidential Information.