123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Media.Imaging;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using ScriptEditor = InABox.DynamicGrid.ScriptEditor;
- namespace PRSDesktop
- {
- public class DataModelTemplateGrid : DynamicDataGrid<DataModelTemplate>
- {
- private readonly BitmapImage _edit = PRSDesktop.Resources.pencil.AsBitmapImage();
- public DataModelTemplateGrid()
- {
- ActionColumns.Add(new DynamicImageColumn(EditImage, EditAction));
- HiddenColumns.Add(x => x.Template);
- }
- public DataModel Model { get; set; }
- private BitmapImage EditImage(CoreRow row)
- {
- return _edit;
- }
- private bool EditAction(CoreRow row)
- {
- var template = row.ToObject<DataModelTemplate>();
- var editor = new ScriptEditor(template.Template, SyntaxLanguage.HTML);
- var snippets = new Dictionary<string, string[]>();
- var tables = Model.AsDictionary;
- foreach (var key in tables.Keys)
- {
- var name = key.Name;
- var variable = name.Substring(0, 1).ToLower();
- var cursnippets = new List<string>();
- cursnippets.Add("{{ for " + variable + " in " + name + " }}\n\n{{ end }}");
- var props = DatabaseSchema.Properties(key)
- .Where(x => x.Editor != null && x.Editor.GetType() != typeof(NullEditor) && x.Editor.Visible != Visible.Hidden);
- foreach (var prop in props)
- cursnippets.Add("{{ " + variable + "." + prop.Name + " }}");
- snippets[name] = cursnippets.ToArray();
- }
- editor.Snippets = snippets;
- if (editor.ShowDialog() == true)
- {
- template.Template = editor.Script;
- new Client<DataModelTemplate>().Save(template, "Updated by User");
- return true;
- }
- return false;
- }
- protected override void Reload(Filters<DataModelTemplate> criteria, Columns<DataModelTemplate> columns, ref SortOrder<DataModelTemplate> sort,
- Action<CoreTable, Exception> action)
- {
- criteria.Add(new Filter<DataModelTemplate>(x => x.Model).IsEqualTo(Model.Name));
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override DataModelTemplate CreateItem()
- {
- var result = base.CreateItem();
- result.Model = Model.Name;
- return result;
- }
- }
- }
|