Ok, I am about to go on vacation, so I decided to let the cat out of the bag a little early on what I’ve been working on, as well as give a little teaser.
I’ve decided to unzip my lip, as I would like some feedback before I polish it up and release the first beta. (alpha? )
I’ve created a new tool(s).
This tool, “Klient” (catchy name eh… ), is a plugin manager, that runs locally (or anywhere really).
Klient hosts plugins, and provides a plugin framework. It doesn’t do any real work except pass messages between plugins. It also provides a small tray icon based UI, with some statistics, and hooks for the menu.
…
The real action is in the plugins, of which I have created two.
Plugins at launch:
-
Konnector
- This plugin is based on Azure Relay Hybrid Connections.
This allows you to send messages securely from Epicor, or any other source, to your on-prem services, and optionally, receive a response back.
No firewall configuration needed.
- This plugin is based on Azure Relay Hybrid Connections.
-
Konsole
- This plugin is a remote console, It will receive messages from Konnector and display them on screen. It also has a few other functions.
- An accompanying Epicor Function Library is included to call this, as well as some cut and paste code to make it easier for advanced or intense scenarios.
Here is a little demo of Konsole:
Here is the (partial) code that did that on the server.
List<string> list2 = new List<string>()
{
"JavaScript was made for the masses",
"It lacked types, and modules, and classes.",
"But it became quite the giant",
"Because it ran on server and client",
"Until it crashed both, despite 100 test passes."
};
List<string> list1 = new List<string>()
{
"The code was written with haste",
"I had not time for breaks",
"But what does this do",
"I really have no clue",
"Perhaps, I should have comments interlaced."
};
Random rnd = new Random();
foreach(string line in list1)
{
Color c = Color.FromArgb(255, rnd.Next(175, 255), rnd.Next(175, 255), rnd.Next(175, 255));
Konsole.WriteLineColor(line, c);
Delay(1000).Wait();
}
Delay(500).Wait();
Konsole.Clear();
Delay(500).Wait();
foreach(string line in list2)
{
Color c = Color.FromArgb(255, rnd.Next(175, 255), rnd.Next(175, 255), rnd.Next(175, 255));
Konsole.WriteLineColor(line, c);
Delay(1000).Wait();
}
Delay(500).Wait();
Konsole.Clear();
Delay(500).Wait();
var abc = Db.ABCCode.Select(x => new
{
x.ABCCode1,
x.CalcPcnt,
x.CalcQty,
x.CalcValue,
x.CountFreq
}).ToList();
Konsole.WriteLineColor(abc, Color.YellowGreen);
Delay(1000).Wait();
Konsole.Clear();
Delay(250).Wait();
Konsole.WriteLineColor(Konsole.YesNo("I'd like to know.", "Would you like to play with me?", 0), Color.Lime);
Delay(1000).Wait();
Konsole.Clear();
Delay(250).Wait();
:star2
Konsole.DumpAsFileText(list1, false);
Konsole.DumpAsFileText(list1, true);
Konsole.WriteLine(Konsole.DumpAsFileText(list1, true));
But wait, there’s more:
The entire thing will be published under the MIT license, the code & the specifications, and you can easily write your own plugins. Or if you want to throw a few bucks my way, I’ll certainly write you one lol. (Or some other programmer of your choice.)