Skip to content

Commit 810dd2e

Browse files
authored
Merge pull request #143 from digma-ai/bug/environment_selection_issues
fixed env selection
2 parents 6c224b4 + 69ba53f commit 810dd2e

File tree

1 file changed

+56
-24
lines changed

1 file changed

+56
-24
lines changed

src/views/codeAnalytics/CodeObjectGroups/CodeObjectGroupEnvUsage.ts

Lines changed: 56 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import { CodeObjectUsageStatus, UsageStatusResults } from "../../../services/analyticsProvider";
1+
import { CodeObjectUsageStatus, EnvironmentUsageStatus, UsageStatusResults } from "../../../services/analyticsProvider";
22
import { Settings } from "../../../settings";
33
import { WebViewUris } from "../../webViewUtils";
44
import * as os from 'os';
5+
import moment = require("moment");
56

67
export interface IRenderCodeObjectGroupEnvironments{
78

@@ -42,18 +43,40 @@ export class CodeObjectGroupEnvironments implements IRenderCodeObjectGroupEnviro
4243
return environment.toLowerCase().startsWith(os.hostname());
4344
}
4445

45-
private getEnvironmentHtml(envName: string, envDisplayName: string, envClass: string, codeObjectStatuses: CodeObjectUsageStatus[] ){
46-
let firstUpdateTimes = codeObjectStatuses.map(x=>x.firstRecordedTime).sort().firstOrDefault();
47-
let lastUpdateTimes = codeObjectStatuses.map(x=>x.lastRecordedTime).sort().reverse().firstOrDefault();
46+
private getEnvironmentHtml(envName: string, envDisplayName: string, isLocal: boolean,
47+
isused:boolean,
48+
codeObjectStatuses: CodeObjectUsageStatus[],
49+
environmentStatus: EnvironmentUsageStatus ){
50+
51+
let firstUpdateTime = "";
52+
let lastUpdateTime ="";
53+
54+
if (isLocal){
55+
firstUpdateTime = environmentStatus.environmentFirstRecordedTime.fromNow();
56+
lastUpdateTime = environmentStatus.environmentLastRecordedTime.fromNow();
57+
58+
}
59+
else{
60+
firstUpdateTime = codeObjectStatuses.map(x=>x.firstRecordedTime).sort().firstOrDefault()?.fromNow();
61+
lastUpdateTime = codeObjectStatuses.map(x=>x.lastRecordedTime).sort().reverse().firstOrDefault()?.fromNow();
62+
63+
}
64+
65+
let envClass:string="";
66+
if (isLocal){
67+
envClass="codeobj-local-environment";
68+
}
69+
70+
const image = isused ? 'used.png' : 'unused.png';
4871
return `
4972
<span class="codeobj-environment-usage" >
50-
<img style="align-self:center;vertical-align:baseline" src="${this._viewUris.image("used.png")}" width="8" height="8"
51-
title="Last data received: ${lastUpdateTimes?.fromNow()}\nFirst data received: ${firstUpdateTimes?.fromNow()}">
73+
<img style="align-self:center;vertical-align:baseline" src="${this._viewUris.image(image)}" width="8" height="8"
74+
title="Last data received: ${lastUpdateTime}\nFirst data received: ${firstUpdateTime}">
5275
<span class="${this.getSelectedOrUnselectedTag(envName)} ${envClass}" data-env-name="${envName}">${envDisplayName}</span>
5376
</span>`;
5477
}
5578

56-
private getUsedEnvironmentHtml(item: string|undefined, type:string|undefined, usageResults: UsageStatusResults){
79+
private getUsedEnvironmentsHtml(item: string|undefined, type:string|undefined, usageResults: UsageStatusResults){
5780

5881
let usageItems=this.filterByTypeAndName(item,type,usageResults);
5982
let usageByEnv = usageItems.groupBy(x=>x.environment);
@@ -62,44 +85,53 @@ export class CodeObjectGroupEnvironments implements IRenderCodeObjectGroupEnviro
6285
let html = ``;
6386

6487
if (localEnvironment){
65-
const envSpecialClass="codeobj-local-environment";
88+
let environmentUsage = usageResults.environmentStatuses.filter(x=>x.name===localEnvironment).single();
6689
let items = usageByEnv[localEnvironment];
67-
html+=this.getEnvironmentHtml(localEnvironment, "LOCAL",envSpecialClass,items);
90+
html+=this.getEnvironmentHtml(localEnvironment, "LOCAL",true,true,items,environmentUsage);
6891
}
6992

7093
for (const env of environments.sort()){
7194
if (this.isEnvironmentLocal(env)){
7295
continue;
7396
}
97+
let environmentUsage = usageResults.environmentStatuses.filter(x=>x.name===env).single();
7498
let items = usageByEnv[env];
75-
html+=this.getEnvironmentHtml(env,env, "",items);
99+
html+=this.getEnvironmentHtml(env,env, false, true,items,environmentUsage);
76100

77101
}
78102
return html;
79103
}
80104

81-
private getUnusedEnvironmentHtml(item: string|undefined, type:string|undefined, usageResults: UsageStatusResults){
82-
let usageItems = this.filterByTypeAndName(item,type,usageResults).map(x=>x.environment);
105+
private getUnusedEnvironmentsHtml(item: string|undefined, type:string|undefined, usageResults: UsageStatusResults){
106+
let usedEnvironments = this.filterByTypeAndName(item,type,usageResults).map(x=>x.environment);
107+
let unusedEnvs = usageResults.environmentStatuses.filter(x=>!usedEnvironments.includes(x.name));
108+
83109
let html = ``;
110+
let localEnvironment = unusedEnvs.filter(x=>this.isLocalEnvironmentMine(x.name)).firstOrDefault();
84111

85-
let unusedEnvs = usageResults.environmentStatuses.filter(x=>!usageItems.includes(x.name));
86-
for (const env of unusedEnvs){
87-
html+=`
88-
<span class="codeobj-environment-usage" >
89-
<img style="align-self:center;vertical-align:baseline" src="${this._viewUris.image("unused.png")}" width="8" height="8"
90-
title="Last data received from env: ${env.environmentLastRecordedTime.fromNow()}\nFirst data received: ${env.environmentFirstRecordedTime.fromNow()}">
91-
<span class="${this.getSelectedOrUnselectedTag(env.name)}" data-env-name="${env.name}">${env.name}</span>
92-
</span>`;
112+
113+
if (localEnvironment){
114+
let environmentUsage = usageResults.environmentStatuses.filter(x=>x.name===localEnvironment.name).single();
115+
html+=this.getEnvironmentHtml(localEnvironment.name, "LOCAL",true,false,[],environmentUsage);
116+
}
117+
118+
for (const env of unusedEnvs.sort()){
119+
if (this.isEnvironmentLocal(env.name)){
120+
continue;
121+
}
122+
let environmentUsage = usageResults.environmentStatuses.filter(x=>x.name===env.name).single();
123+
html+=this.getEnvironmentHtml(env.name,env.name,false, false,[],environmentUsage);
93124

94125
}
95126
return html;
96-
127+
128+
97129

98130
}
99131

100132
public getUsageHtml(item: string|undefined, type:string|undefined, usageResults: UsageStatusResults){
101133

102-
if (usageResults.environmentStatuses.length<=1){
134+
if (usageResults.environmentStatuses.length<1){
103135
return '';
104136
}
105137

@@ -109,8 +141,8 @@ export class CodeObjectGroupEnvironments implements IRenderCodeObjectGroupEnviro
109141

110142
return `
111143
<div class="codeobj-environment-usage-group">
112-
${this.getUsedEnvironmentHtml(item,type,usageResults)}
113-
${this.getUnusedEnvironmentHtml(item,type,usageResults)}
144+
${this.getUsedEnvironmentsHtml(item,type,usageResults)}
145+
${this.getUnusedEnvironmentsHtml(item,type,usageResults)}
114146
</div>`;
115147
}
116148

0 commit comments

Comments
 (0)