Update TS CommandContext type.

This commit is contained in:
Jared Goodwin 2020-03-05 00:06:05 -08:00
parent 093192eeb9
commit 8209772a49
12 changed files with 27 additions and 27 deletions

View File

@ -35,8 +35,8 @@
<Content Remove="wwwroot\scripts\Enums\RemoteControlMode.ts" />
<Content Remove="wwwroot\scripts\InputEventHandlers.ts" />
<Content Remove="wwwroot\scripts\Main.ts" />
<Content Remove="wwwroot\scripts\Models\CommandContext.ts" />
<Content Remove="wwwroot\scripts\Models\CommandLineParameter.ts" />
<Content Remove="wwwroot\scripts\Models\CommandResult.ts" />
<Content Remove="wwwroot\scripts\Models\ConsoleCommand.ts" />
<Content Remove="wwwroot\scripts\Models\CursorInfo.ts" />
<Content Remove="wwwroot\scripts\Models\Device.ts" />
@ -112,7 +112,7 @@
<None Include="wwwroot\lib\signalr\signalr.js.map" />
<None Include="wwwroot\lib\signalr\signalr.min.js" />
<None Include="wwwroot\lib\signalr\signalr.min.js.map" />
<None Include="wwwroot\scripts\Models\CommandContext.ts">
<None Include="wwwroot\scripts\Models\CommandResult.ts">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</None>

View File

@ -137,8 +137,8 @@ function applyMessageHandlers(hubConnection) {
};
xhr.send();
});
hubConnection.on("CommandContextCreated", (context) => {
AddConsoleHTML(CreateCommandHarness(context).outerHTML);
hubConnection.on("CommandContextCreated", (result) => {
AddConsoleHTML(CreateCommandHarness(result).outerHTML);
});
hubConnection.on("ServiceID", (serviceID) => {
ServiceID = serviceID;

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@ import * as DataGrid from "./DataGrid.js";
import { Device } from "./Models/Device.js";
import { PSCoreCommandResult } from "./Models/PSCoreCommandResult.js";
import { GenericCommandResult } from "./Models/GenericCommandResult.js";
import { CommandContext } from "./Models/CommandContext.js";
import { CommandResult } from "./Models/CommandResult.js";
import { CreateCommandHarness, AddCommandResultsHarness, AddPSCoreResultsHarness, UpdateResultsCount } from "./ResultsParser.js";
import { Store } from "./Store.js";
import { UserOptions } from "./Models/UserOptions.js";
@ -152,8 +152,8 @@ function applyMessageHandlers(hubConnection) {
};
xhr.send();
});
hubConnection.on("CommandContextCreated", (context: CommandContext) => {
AddConsoleHTML(CreateCommandHarness(context).outerHTML);
hubConnection.on("CommandContextCreated", (result: CommandResult) => {
AddConsoleHTML(CreateCommandHarness(result).outerHTML);
});
hubConnection.on("ServiceID", (serviceID: string) => {
ServiceID = serviceID;

View File

@ -1 +0,0 @@
//# sourceMappingURL=CommandContext.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"CommandContext.js","sourceRoot":"","sources":["CommandContext.ts"],"names":[],"mappings":""}

View File

@ -0,0 +1 @@
//# sourceMappingURL=CommandResult.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"CommandResult.js","sourceRoot":"","sources":["CommandResult.ts"],"names":[],"mappings":""}

View File

@ -1,4 +1,4 @@
export interface CommandContext {
export interface CommandResult {
ID: string;
CommandMode: string;
CommandText: string;

View File

@ -1,21 +1,21 @@
import * as DataGrid from "./DataGrid.js";
import { ConsoleFrame } from "./UI.js";
import { FormatScriptOutput, FormatScriptOutputArray } from "./Utilities.js";
export function CreateCommandHarness(context) {
var collapseClass = context.TargetDeviceIDs.length > 1 ? "collapse" : "collapse show";
export function CreateCommandHarness(result) {
var collapseClass = result.TargetDeviceIDs.length > 1 ? "collapse" : "collapse show";
var commandHarness = document.createElement("div");
var contextID = "c" + context.ID;
var contextID = "c" + result.ID;
commandHarness.id = contextID;
commandHarness.classList.add("command-harness");
commandHarness.innerHTML = `
<div class="command-harness-title">
Command Type: ${context.CommandMode} |
Total Devices: <span id="${contextID}-totaldevices">${context.TargetDeviceIDs.length}</span> |
Command Type: ${result.CommandMode} |
Total Devices: <span id="${contextID}-totaldevices">${result.TargetDeviceIDs.length}</span> |
Completed: <span id="${contextID}-completed">0%</span> |
Errors: <span id="${contextID}-errors">0</span> |
<button class="btn btn-sm btn-secondary" data-toggle="collapse" data-target='#${contextID}-results'>View</button>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/JSON/${context.ID}">JSON</a>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/XML/${context.ID}">XML</a>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/JSON/${result.ID}">JSON</a>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/XML/${result.ID}">XML</a>
</div>
<div id="${contextID}-results" class="${collapseClass}">
</div>`;

View File

@ -1 +1 @@
{"version":3,"file":"ResultsParser.js","sourceRoot":"","sources":["ResultsParser.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"ResultsParser.js","sourceRoot":"","sources":["ResultsParser.ts"],"names":[],"mappings":"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"}

View File

@ -1,25 +1,25 @@
import { CommandContext } from "./Models/CommandContext.js";
import { CommandResult } from "./Models/CommandResult.js";
import { PSCoreCommandResult } from "./Models/PSCoreCommandResult.js";
import * as DataGrid from "./DataGrid.js";
import { GenericCommandResult } from "./Models/GenericCommandResult.js";
import { ConsoleOutputDiv, TabContentWrapper, ConsoleFrame } from "./UI.js";
import { FormatScriptOutput, FormatScriptOutputArray } from "./Utilities.js";
export function CreateCommandHarness(context: CommandContext): HTMLDivElement {
var collapseClass = context.TargetDeviceIDs.length > 1 ? "collapse" : "collapse show";
export function CreateCommandHarness(result: CommandResult): HTMLDivElement {
var collapseClass = result.TargetDeviceIDs.length > 1 ? "collapse" : "collapse show";
var commandHarness = document.createElement("div");
var contextID = "c" + context.ID;
var contextID = "c" + result.ID;
commandHarness.id = contextID;
commandHarness.classList.add("command-harness");
commandHarness.innerHTML = `
<div class="command-harness-title">
Command Type: ${context.CommandMode} |
Total Devices: <span id="${contextID}-totaldevices">${context.TargetDeviceIDs.length}</span> |
Command Type: ${result.CommandMode} |
Total Devices: <span id="${contextID}-totaldevices">${result.TargetDeviceIDs.length}</span> |
Completed: <span id="${contextID}-completed">0%</span> |
Errors: <span id="${contextID}-errors">0</span> |
<button class="btn btn-sm btn-secondary" data-toggle="collapse" data-target='#${contextID}-results'>View</button>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/JSON/${context.ID}">JSON</a>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/XML/${context.ID}">XML</a>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/JSON/${result.ID}">JSON</a>
<a class="btn btn-sm btn-secondary" target="_blank" href="${location.origin}/API/Commands/XML/${result.ID}">XML</a>
</div>
<div id="${contextID}-results" class="${collapseClass}">
</div>`;