Skip to content

Commit db28599

Browse files
committedAug 7, 2024
Fix for multiple apps with the same name, when clicking the panel import button
1 parent 92707c9 commit db28599

File tree

1 file changed

+94
-94
lines changed

1 file changed

+94
-94
lines changed
 

‎Low Code App Editor_1/Controllers/AppEditor/Panels/EditorPanelsImportController.cs

+94-94
Original file line numberDiff line numberDiff line change
@@ -2,98 +2,98 @@
22

33
namespace Low_Code_App_Editor_1.Controllers
44
{
5-
using System;
6-
using System.Collections.Generic;
7-
using System.IO;
8-
using System.Linq;
9-
10-
using Low_Code_App_Editor_1.LCA;
11-
using Low_Code_App_Editor_1.UI;
12-
13-
using Newtonsoft.Json;
14-
using Newtonsoft.Json.Linq;
15-
16-
using Skyline.DataMiner.Automation;
17-
using Skyline.DataMiner.Net.Apps.DataMinerObjectModel.Concatenation;
18-
using Skyline.DataMiner.Utils.InteractiveAutomationScript;
19-
using Skyline.DataMiner.Web.Common.v1;
20-
21-
public static class EditorPanelsImportController
22-
{
23-
public static void Load(this AppEditorPanelsImport editor, App selectedApp, IEnumerable<App> apps, IEngine engine)
24-
{
25-
editor.SelectedApp = selectedApp;
26-
editor.Apps.Options.Clear();
27-
editor.Apps.Options.AddRange(apps.Select(app => Option.Create(app.Name, app)));
28-
29-
var defaultSelected = editor.Apps.Options.FirstOrDefault();
30-
if (defaultSelected == null)
31-
{
32-
return;
33-
}
34-
35-
editor.Apps.SelectedValue = defaultSelected.Value;
36-
37-
editor.LoadPanels(defaultSelected.Value, engine);
38-
}
39-
40-
public static void LoadPanels(this AppEditorPanelsImport editor, App app, IEngine engine)
41-
{
42-
editor.Panels.Options.Clear();
43-
editor.Panels.Options.AddRange(app.LatestVersion.Panels.Select(panel => Option.Create(panel.Name, panel)));
44-
}
45-
46-
public static void Import(this AppEditorPanelsImport editor, IEngine engine)
47-
{
48-
var selectedApp = editor.Apps.SelectedValue;
49-
var selectedPanel = editor.Panels.SelectedValue;
50-
51-
// Check if draft page needs to be updated too
52-
if (editor.SelectedApp.LatestDraftVersion != null)
53-
{
54-
ImportIntoVersion(selectedApp.LatestVersion, selectedPanel, editor.SelectedApp.LatestDraftVersion);
55-
}
56-
57-
// Import panel into latest version
58-
ImportIntoVersion(selectedApp.LatestVersion, selectedPanel, editor.SelectedApp.LatestVersion);
59-
}
60-
61-
private static void ImportIntoVersion(AppVersion fromAppVersion, DMAApplicationPanel fromPanel, AppVersion toAppVersion)
62-
{
63-
// Grab json configurations
64-
var selectedAppJson = JObject.Parse(File.ReadAllText(fromAppVersion.Path));
65-
var selectedPanelJson = ((JArray)selectedAppJson.SelectToken("Panels")).FirstOrDefault(token => token["Name"].Value<string>() == fromPanel.Name);
66-
if (selectedPanelJson == null)
67-
{
68-
throw new FileNotFoundException($"The panel from app '{fromAppVersion.Name}' called '{fromPanel.Name}', was not found.");
69-
}
70-
71-
// Copy over page
72-
File.Copy(
73-
Path.Combine(fromAppVersion.FolderPath, "pages", $"{fromPanel.ID}.dmadb.json"),
74-
Path.Combine(toAppVersion.FolderPath, "pages", $"{fromPanel.ID}.dmadb.json"));
75-
76-
// Edit the latest config to include the newly added page
77-
var config = JObject.Parse(File.ReadAllText(toAppVersion.Path));
78-
var panelsToken = config.SelectToken("Panels");
79-
if (panelsToken.Type == JTokenType.Null)
80-
{
81-
panelsToken = new JArray();
82-
}
83-
84-
var panels = (JArray)panelsToken;
85-
panels.Add(selectedPanelJson);
86-
config["Panels"] = panels;
87-
88-
// Update our local copy of the app
89-
var localPanels = toAppVersion.Panels.ToList();
90-
localPanels.Add(fromPanel);
91-
toAppVersion.Panels = localPanels.ToArray();
92-
93-
// Save the config
94-
File.WriteAllText(
95-
Path.Combine(toAppVersion.Path),
96-
config.ToString(Formatting.None));
97-
}
98-
}
5+
using System;
6+
using System.Collections.Generic;
7+
using System.IO;
8+
using System.Linq;
9+
10+
using Low_Code_App_Editor_1.LCA;
11+
using Low_Code_App_Editor_1.UI;
12+
13+
using Newtonsoft.Json;
14+
using Newtonsoft.Json.Linq;
15+
16+
using Skyline.DataMiner.Automation;
17+
using Skyline.DataMiner.Net.Apps.DataMinerObjectModel.Concatenation;
18+
using Skyline.DataMiner.Utils.InteractiveAutomationScript;
19+
using Skyline.DataMiner.Web.Common.v1;
20+
21+
public static class EditorPanelsImportController
22+
{
23+
public static void Load(this AppEditorPanelsImport editor, App selectedApp, IEnumerable<App> apps, IEngine engine)
24+
{
25+
editor.SelectedApp = selectedApp;
26+
editor.Apps.Options.Clear();
27+
editor.Apps.Options.AddRange(apps.Select(app => Option.Create($"[{app.LatestVersion.ID}] - {app.Name}", app)));
28+
29+
var defaultSelected = editor.Apps.Options.FirstOrDefault();
30+
if (defaultSelected == null)
31+
{
32+
return;
33+
}
34+
35+
editor.Apps.SelectedValue = defaultSelected.Value;
36+
37+
editor.LoadPanels(defaultSelected.Value, engine);
38+
}
39+
40+
public static void LoadPanels(this AppEditorPanelsImport editor, App app, IEngine engine)
41+
{
42+
editor.Panels.Options.Clear();
43+
editor.Panels.Options.AddRange(app.LatestVersion.Panels.Select(panel => Option.Create(panel.Name, panel)));
44+
}
45+
46+
public static void Import(this AppEditorPanelsImport editor, IEngine engine)
47+
{
48+
var selectedApp = editor.Apps.SelectedValue;
49+
var selectedPanel = editor.Panels.SelectedValue;
50+
51+
// Check if draft page needs to be updated too
52+
if (editor.SelectedApp.LatestDraftVersion != null)
53+
{
54+
ImportIntoVersion(selectedApp.LatestVersion, selectedPanel, editor.SelectedApp.LatestDraftVersion);
55+
}
56+
57+
// Import panel into latest version
58+
ImportIntoVersion(selectedApp.LatestVersion, selectedPanel, editor.SelectedApp.LatestVersion);
59+
}
60+
61+
private static void ImportIntoVersion(AppVersion fromAppVersion, DMAApplicationPanel fromPanel, AppVersion toAppVersion)
62+
{
63+
// Grab json configurations
64+
var selectedAppJson = JObject.Parse(File.ReadAllText(fromAppVersion.Path));
65+
var selectedPanelJson = ((JArray)selectedAppJson.SelectToken("Panels")).FirstOrDefault(token => token["Name"].Value<string>() == fromPanel.Name);
66+
if (selectedPanelJson == null)
67+
{
68+
throw new FileNotFoundException($"The panel from app '{fromAppVersion.Name}' called '{fromPanel.Name}', was not found.");
69+
}
70+
71+
// Copy over page
72+
File.Copy(
73+
Path.Combine(fromAppVersion.FolderPath, "pages", $"{fromPanel.ID}.dmadb.json"),
74+
Path.Combine(toAppVersion.FolderPath, "pages", $"{fromPanel.ID}.dmadb.json"));
75+
76+
// Edit the latest config to include the newly added page
77+
var config = JObject.Parse(File.ReadAllText(toAppVersion.Path));
78+
var panelsToken = config.SelectToken("Panels");
79+
if (panelsToken.Type == JTokenType.Null)
80+
{
81+
panelsToken = new JArray();
82+
}
83+
84+
var panels = (JArray)panelsToken;
85+
panels.Add(selectedPanelJson);
86+
config["Panels"] = panels;
87+
88+
// Update our local copy of the app
89+
var localPanels = toAppVersion.Panels.ToList();
90+
localPanels.Add(fromPanel);
91+
toAppVersion.Panels = localPanels.ToArray();
92+
93+
// Save the config
94+
File.WriteAllText(
95+
Path.Combine(toAppVersion.Path),
96+
config.ToString(Formatting.None));
97+
}
98+
}
9999
}

0 commit comments

Comments
 (0)