Exemplo n.º 1
0
        /// <summary>
        /// Convert the saved json into a strongly typed model
        /// </summary>
        /// <param name="publishedPropertyType"></param>
        /// <param name="source">The saved json from the Checkbox table property editor</param>
        /// <param name="preview"></param>
        /// <returns>A <see cref="CheckboxTable"/> object</returns>
        public override object ConvertSourceToObject(PublishedPropertyType publishedPropertyType, object source, bool preview)
        {
            var checkboxTable = new Models.CheckboxTable();

            /*
             *  {
             *      columns: ['Bronze', 'Silver', 'Gold'],
             *      rows: ['Feature 1', 'Feature 2'],
             *      cells: [
             *          [true, false, false],
             *          [false, false, false]
             *      ]
             *  }
             */

            var json = JObject.Parse((string)source);

            checkboxTable.ColumnLabels = json["columns"].ToObject <string[]>();

            List <CheckboxTableRow> checkboxTableRows = new List <CheckboxTableRow>();

            var rowCounter = 0;

            foreach (var row in json["rows"])
            {
                checkboxTableRows.Add(
                    new CheckboxTableRow()
                {
                    RowLabel = row.ToString(),
                    Cells    = json["cells"][rowCounter].ToObject <bool[]>()
                });

                rowCounter++;
            }

            checkboxTable.Rows = checkboxTableRows.ToArray();

            return(checkboxTable);
        }
        /// <summary>
        /// Convert the saved json into a strongly typed model
        /// </summary>
        /// <param name="publishedPropertyType"></param>
        /// <param name="source">The saved json from the Checkbox table property editor</param>
        /// <param name="preview"></param>
        /// <returns>A <see cref="CheckboxTable"/> object</returns>
        public override object ConvertSourceToObject(PublishedPropertyType publishedPropertyType, object source, bool preview)
        {
            var checkboxTable = new Models.CheckboxTable();

            var rows = JArray.Parse((string)source);

            checkboxTable.ColumnLabels = rows.First().Skip(1).Select(x => x.ToString()).ToArray();

            List <CheckboxTableRow> checkboxTableRows = new List <CheckboxTableRow>();

            foreach (var row in rows.Skip(1))
            {
                checkboxTableRows.Add(new CheckboxTableRow()
                {
                    RowLabel = row.First().ToString(),
                    Cells    = row.Skip(1).Select(x => (bool)x).ToArray()
                });
            }

            checkboxTable.Rows = checkboxTableRows.ToArray();

            return(checkboxTable);
        }