using System;
using ATVO.ThemesSDK;
using ATVO.ThemeEditor.ThemeModels;
using ATVO.ThemeEditor.Scripting.DotNET;
using ATVO.ThemesSDK.Data.Results;
using System.Collections.Generic;
using System.Linq;
namespace Scripts
{
public class CarNumberScript : IScript
{
public object Execute(ThemeContentItem item, object value, string parameter, ISimulation sim)
{
// Get the label running this converter script
// This label is showing the dynamic image
var label = item as Label;
if (label == null)
return null;
// Get the 'default carnumber' label to show instead
var index = 3; // The index (0-based) of your label in the template subwidget's list of labels
var subwidget = label.Parent;
var defaultLabel = subwidget.Labels[index];
// Check if the dynamic image was found
var path = label.DynamicBackground.GetAbsolutePath(item.Theme);
if (System.IO.File.Exists(path))
{
// Show dynamic image label
defaultLabel.IsVisible = false;
label.IsVisible = true;
}
else
{
// Show regular label
defaultLabel.IsVisible = true;
label.IsVisible = false;
}
return null;
}
}
}
Harold Darner wrote:I think it works when running in ATVO, but not in the editor. For the editor you also need to set "IsVisibleInEditor" separately.
I was able to fix the Dynamic Image file by replacing return null with return value.
However, I cannot hide the CARNUM label.
using System;
using ATVO.ThemesSDK;
using ATVO.ThemeEditor.ThemeModels;
using ATVO.ThemeEditor.Scripting.DotNET;
using System.Linq;
namespace Scripts
{
public class CarNumberScript : IScript
{
public object Execute(ThemeContentItem item, object value, string parameter, ISimulation sim)
{
// Get the label running this converter script
// This label is showing the dynamic image
var label = item as Label;
if (label == null)
return null;
// Get the 'default carnumber' label to show instead
var index = 0; // The index (0-based) of your label in the template subwidget's list of labels
var subwidget = label.Parent;
var defaultLabel = subwidget.Labels.FirstOrDefault(l => l.ZIndex == index);
// Check if the dynamic image was found
var path = label.DynamicBackground.GetAbsolutePath(item.Theme);
if (System.IO.File.Exists(path))
{
// Show dynamic image label
defaultLabel.IsVisible = false;
defaultLabel.IsVisibleInEditor = false;
}
else
{
// Show regular label
defaultLabel.IsVisible = true;
defaultLabel.IsVisibleInEditor = true;
}
return value;
}
}
}
Harold Darner wrote:Grabbing data from a spreadsheet is easy, especially if your spreadsheet has a clear unique identifier column and you can grab the data via that identifier. For example if DriverID (customer ID) is your identifier in the first column of the spreadsheet you can simply call "FindRow" on the spreadsheet and get the data in each column in an array:
I have found a solution of sorts but I am trying to figure a way to grab a cell associated with a DriverID from a .csv file within the script. Has anyone tried that?
var id = "123456"; // Must be a string
id = entity.Id.ToString(); // Or convert the Id from an IEntity
// Find spreadsheet by name
var s = item.Theme.Spreadsheets.Find("test.csv");
// Get row data
var row = s.FindRow(id);
// 'row' is an array of objects, one per column
var col1 = row[0].ToString();
var col2 = row[1].ToString();
var col3 = row[2].ToString();
// You can also find rows by data in other columns (not the first, identifier column)
var otherId = "Driver name which is in the third column"
var otherRow = s.FindRow(otherId, 2); // Look in the 3rd column (zero-based)