diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 37ec9a2c..108ee935 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -180,6 +180,7 @@ import { StartCaptureDialogComponent } from './components/project-map/packet-cap
import { SuspendLinkActionComponent } from './components/project-map/context-menu/actions/suspend-link/suspend-link-action.component';
import { ResumeLinkActionComponent } from './components/project-map/context-menu/actions/resume-link-action/resume-link-action.component';
import { StopCaptureActionComponent } from './components/project-map/context-menu/actions/stop-capture/stop-capture-action.component';
+import { AdbutlerComponent } from './components/adbutler/adbutler.component';
import { ConsoleService } from './services/settings/console.service';
import { DefaultConsoleService } from './services/settings/default-console.service';
import { NodeCreatedLabelStylesFixer } from './components/project-map/helpers/node-created-label-styles-fixer';
@@ -297,6 +298,8 @@ if (environment.production) {
NameFilter,
ListOfSnapshotsComponent,
CustomAdaptersComponent,
+ NodesMenuComponent,
+ AdbutlerComponent,
ConsoleDeviceActionComponent,
ConsoleComponent,
NodesMenuComponent
diff --git a/src/app/components/adbutler/adbutler.component.html b/src/app/components/adbutler/adbutler.component.html
new file mode 100644
index 00000000..4e7940a3
--- /dev/null
+++ b/src/app/components/adbutler/adbutler.component.html
@@ -0,0 +1,15 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/components/adbutler/adbutler.component.scss b/src/app/components/adbutler/adbutler.component.scss
new file mode 100644
index 00000000..cdb7ea77
--- /dev/null
+++ b/src/app/components/adbutler/adbutler.component.scss
@@ -0,0 +1,7 @@
+.butler a {
+ color: #0097a7;
+}
+
+.butler {
+ font-size: 14px;
+}
\ No newline at end of file
diff --git a/src/app/components/adbutler/adbutler.component.spec.ts b/src/app/components/adbutler/adbutler.component.spec.ts
new file mode 100644
index 00000000..05212323
--- /dev/null
+++ b/src/app/components/adbutler/adbutler.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdbutlerComponent } from './adbutler.component';
+
+describe('AdbutlerComponent', () => {
+ let component: AdbutlerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AdbutlerComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdbutlerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/adbutler/adbutler.component.ts b/src/app/components/adbutler/adbutler.component.ts
new file mode 100644
index 00000000..54c5ae1d
--- /dev/null
+++ b/src/app/components/adbutler/adbutler.component.ts
@@ -0,0 +1,68 @@
+import { Component, OnInit, ElementRef, ViewChild, AfterViewInit, ViewEncapsulation, OnDestroy } from '@angular/core';
+
+@Component({
+ selector: 'app-adbutler',
+ templateUrl: './adbutler.component.html',
+ styleUrls: ['./adbutler.component.scss'],
+ encapsulation: ViewEncapsulation.None
+})
+export class AdbutlerComponent implements OnInit, AfterViewInit, OnDestroy {
+ id: number;
+ setId: number;
+ rnd: number;
+ abkw: string;
+ sparkCounter: number;
+ divId: string;
+
+ @ViewChild('code') code: ElementRef;
+
+ constructor() { }
+
+ ngOnInit() {
+ var loadedTextAds355353 = (window as any).loadedTextAds355353;
+ if(loadedTextAds355353 == null) {
+ (window as any).loadedTextAds355353 = new Array();
+ }
+
+ (window as any).id355353 = 165803;
+ (window as any).setID355353 = 355353;
+ (window as any).rnd = (window as any).rnd || Math.floor(Math.random()*10e6);
+ (window as any).abkw = (window as any).abkw ||'';
+
+ var sparkCounter355353 = (window as any).sparkCounter355353;
+ if(sparkCounter355353 == null) {
+ sparkCounter355353 = 1;
+ }
+ else {
+ sparkCounter355353 = sparkCounter355353 + 1
+ }
+
+ (window as any).sparkCounter355353 = sparkCounter355353;
+ (window as any).loadedTextAds355353[sparkCounter355353] = false;
+
+ this.id = (window as any).id355353;
+ this.divId = "abta355353" + sparkCounter355353;
+ this.setId = (window as any).setID355353;
+ this.abkw = (window as any).abkw;
+ this.rnd = (window as any).rnd;
+ this.sparkCounter = (window as any).sparkCounter355353;
+ }
+
+ ngAfterViewInit() {
+ const scriptUrl = "https://servedbyadbutler.com/adserve/;ID=" + this.id + ";setID=" + this.setId + ";type=textad;kw=" + this.abkw + ";pid=" + this.rnd + ";layoutID=" + this.sparkCounter;
+
+ const scriptElement = document.createElement('script');
+ scriptElement.src = scriptUrl;
+ scriptElement.type = 'text/javascript';
+ scriptElement.async = true;
+ scriptElement.charset = 'utf-8';
+ this.code.nativeElement.appendChild(scriptElement);
+ }
+
+ ngOnDestroy() {
+ // start from 0 when switching pages
+ (window as any).sparkCounter355353 = 0;
+ delete (window as any).loadedTextAds355353[this.sparkCounter];
+ }
+
+}
diff --git a/src/app/components/installed-software/installed-software.component.html b/src/app/components/installed-software/installed-software.component.html
index 32d0e83e..28292ad4 100644
--- a/src/app/components/installed-software/installed-software.component.html
+++ b/src/app/components/installed-software/installed-software.component.html
@@ -8,13 +8,21 @@
Name
- {{ row.name }}
+
+
+ {{ row.name }}
+
+
+
+
+
+
-
+
diff --git a/src/app/components/installed-software/installed-software.component.ts b/src/app/components/installed-software/installed-software.component.ts
index 2d8e098b..8ebdb4b0 100644
--- a/src/app/components/installed-software/installed-software.component.ts
+++ b/src/app/components/installed-software/installed-software.component.ts
@@ -47,7 +47,11 @@ export class InstalledSoftwareDataSource extends DataSource {
disconnect() {}
refresh() {
- this.installed.next(this.installedSoftwareService.list());
+ let installedSoftware = this.installedSoftwareService.list();
+ installedSoftware.push({
+ type: 'adbutler'
+ });
+ this.installed.next(installedSoftware);
}
}