private OpenHome.Xapp.JsonObject GetBoxTracking(List <Box> aBoxList) { Dictionary <string, int> modelCount = new Dictionary <string, int>(); Dictionary <string, int> softwareVersionCount = new Dictionary <string, int>(); foreach (Box b in aBoxList) { if (!modelCount.ContainsKey(b.Model)) { modelCount.Add(b.Model, 1); } else { modelCount[b.Model] += 1; } string softwareVersion = b.SoftwareVersion; // log nulls and blanks as Unknown if (softwareVersion == null || softwareVersion == String.Empty) { softwareVersion = "Unknown"; } if (!softwareVersionCount.ContainsKey(softwareVersion)) { softwareVersionCount.Add(softwareVersion, 1); } else { softwareVersionCount[softwareVersion] += 1; } } var resultJson = new OpenHome.Xapp.JsonObject(); var modelsJson = new OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonObject>(); foreach (string modelName in modelCount.Keys) { OpenHome.Xapp.JsonObject modelJson = new OpenHome.Xapp.JsonObject(); modelJson.Add("Name", new OpenHome.Xapp.JsonValueString(modelName)); modelJson.Add("Value", new OpenHome.Xapp.JsonValueInt(modelCount[modelName])); modelsJson.Add(modelJson); } resultJson.Add("Models", modelsJson); var versionsJson = new OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonObject>(); foreach (string version in softwareVersionCount.Keys) { OpenHome.Xapp.JsonObject versionJson = new OpenHome.Xapp.JsonObject(); versionJson.Add("Name", new OpenHome.Xapp.JsonValueString(version)); versionJson.Add("Value", new OpenHome.Xapp.JsonValueInt(softwareVersionCount[version])); versionsJson.Add(versionJson); } resultJson.Add("Versions", versionsJson); return(resultJson); }
protected override void OnActivated(Session aSession) { // get the page model for this session IPageModel model = GetSessionModel(aSession); // enable analytics and send page view event if tracking aSession.Tracker.SetTracking(aSession.Tracking); aSession.Tracker.TrackPageView(Id); // update any ui widgets that reflect tracking state aSession.Send("DataCollectionEnabled", aSession.Tracking); // render widgets foreach (PageDefinitions.Widget widget in iPageDefinition.Widgets) { // get the value of the data from the page model Assert.Check(model != null); System.Reflection.PropertyInfo prop = model.GetType().GetProperty(widget.DataId); string data = prop.GetValue(model, null) as string; // create the json object OpenHome.Xapp.JsonObject json = new OpenHome.Xapp.JsonObject(); // add the basic required properties json.Add("Id", new OpenHome.Xapp.JsonValueString(widget.Id)); json.Add("DataId", new OpenHome.Xapp.JsonValueString(widget.DataId)); json.Add("Value", new OpenHome.Xapp.JsonValueString(data)); // add the optional allowed values if (widget.AllowedValues != null || widget.AllowedValuesSource != null) { // get the list of string allowed values from either the widget XML or an IPageModel property string[] allowedValuesStr = (widget.AllowedValues != null) ? widget.AllowedValues : model.GetType().GetProperty(widget.AllowedValuesSource).GetValue(model, null) as string[]; // create the json array of allowed values OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonValueString> allowedValues = new OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonValueString>(); foreach (string value in allowedValuesStr) { allowedValues.Add(new OpenHome.Xapp.JsonValueString(value)); } json.Add("AllowedValues", allowedValues); } // render the widget aSession.Send(widget.XappEvent, json); } }