@nova-ui/dashboards
Version:
Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and
69 lines • 9.67 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Inject, Injectable } from "@angular/core";
import { EventBus, LoggerService } from "@nova-ui/bits";
import { InteractionHandler, } from "./interaction-handler";
import { UrlInteractionService } from "../../../services/url-interaction.service";
import { PIZZAGNA_EVENT_BUS } from "../../../types";
import * as i0 from "@angular/core";
import * as i1 from "@nova-ui/bits";
import * as i2 from "../../../services/url-interaction.service";
// Window is an interface, so it fails when used in constructor parameters for AoT
export class WindowObject extends Window {
}
export class UrlInteractionHandler extends InteractionHandler {
constructor(eventBus, window, logger, urlInteractionService) {
super(eventBus);
this.window = window;
this.logger = logger;
this.urlInteractionService = urlInteractionService;
}
handleInteraction(interaction) {
if (!this.properties?.url) {
this.logger.warn("The target url has not been defined.");
return;
}
const href = this.urlInteractionService.template(this.properties.url, {
data: interaction.data,
});
// if the link evaluates as empty, then don't go anywhere
if (!href) {
return;
}
if (this.properties.newWindow) {
this.window.open(href);
}
else {
this.window.location.href = href;
}
}
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UrlInteractionHandler, deps: [{ token: PIZZAGNA_EVENT_BUS }, { token: "windowObject" }, { token: i1.LoggerService }, { token: i2.UrlInteractionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UrlInteractionHandler }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UrlInteractionHandler, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.EventBus, decorators: [{
type: Inject,
args: [PIZZAGNA_EVENT_BUS]
}] }, { type: WindowObject, decorators: [{
type: Inject,
args: ["windowObject"]
}] }, { type: i1.LoggerService }, { type: i2.UrlInteractionService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWludGVyYWN0aW9uLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcHJvdmlkZXJzL2ludGVyYWN0aW9uL3VybC1pbnRlcmFjdGlvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUN6RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLDhFQUE4RTtBQUM5RSw0REFBNEQ7QUFDNUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFDdkQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBQy9FLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUVqQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFVLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBR0gsa0JBQWtCLEdBQ3JCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFRcEQsa0ZBQWtGO0FBQ2xGLE1BQU0sT0FBTyxZQUFhLFNBQVEsTUFBTTtDQUFHO0FBRzNDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFHMUM7SUFDRyxZQUNnQyxRQUEwQixFQUN0QixNQUFvQixFQUM1QyxNQUFxQixFQUNyQixxQkFBNEM7UUFFcEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSmdCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDNUMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO0lBR3hELENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxXQUFxQztRQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN6RCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTtTQUN6QixDQUFDLENBQUM7UUFFSCx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDcEM7SUFDTCxDQUFDO2tJQWhDUSxxQkFBcUIsa0JBS2xCLGtCQUFrQixhQUNsQixjQUFjO3NJQU5qQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQU1GLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IEV2ZW50QnVzLCBJRXZlbnQsIExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiQG5vdmEtdWkvYml0c1wiO1xuXG5pbXBvcnQge1xuICAgIElJbnRlcmFjdGlvbkhhbmRsZXJQcm9wZXJ0aWVzLFxuICAgIElJbnRlcmFjdGlvblBheWxvYWQsXG4gICAgSW50ZXJhY3Rpb25IYW5kbGVyLFxufSBmcm9tIFwiLi9pbnRlcmFjdGlvbi1oYW5kbGVyXCI7XG5pbXBvcnQgeyBVcmxJbnRlcmFjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXJsLWludGVyYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBJWlpBR05BX0VWRU5UX0JVUyB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElVcmxJbnRlcmFjdGlvbkhhbmRsZXJQcm9wZXJ0aWVzXG4gICAgZXh0ZW5kcyBJSW50ZXJhY3Rpb25IYW5kbGVyUHJvcGVydGllcyB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgbmV3V2luZG93PzogYm9vbGVhbjtcbn1cblxuLy8gV2luZG93IGlzIGFuIGludGVyZmFjZSwgc28gaXQgZmFpbHMgd2hlbiB1c2VkIGluIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIEFvVFxuZXhwb3J0IGNsYXNzIFdpbmRvd09iamVjdCBleHRlbmRzIFdpbmRvdyB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJsSW50ZXJhY3Rpb25IYW5kbGVyIGV4dGVuZHMgSW50ZXJhY3Rpb25IYW5kbGVyPFxuICAgIElVcmxJbnRlcmFjdGlvbkhhbmRsZXJQcm9wZXJ0aWVzLFxuICAgIGFueVxuPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoUElaWkFHTkFfRVZFTlRfQlVTKSBldmVudEJ1czogRXZlbnRCdXM8SUV2ZW50PixcbiAgICAgICAgQEluamVjdChcIndpbmRvd09iamVjdFwiKSBwcml2YXRlIHdpbmRvdzogV2luZG93T2JqZWN0LFxuICAgICAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1cmxJbnRlcmFjdGlvblNlcnZpY2U6IFVybEludGVyYWN0aW9uU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihldmVudEJ1cyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUludGVyYWN0aW9uKGludGVyYWN0aW9uOiBJSW50ZXJhY3Rpb25QYXlsb2FkPGFueT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnRpZXM/LnVybCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcIlRoZSB0YXJnZXQgdXJsIGhhcyBub3QgYmVlbiBkZWZpbmVkLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBocmVmID0gdGhpcy51cmxJbnRlcmFjdGlvblNlcnZpY2UudGVtcGxhdGUodGhpcy5wcm9wZXJ0aWVzLnVybCwge1xuICAgICAgICAgICAgZGF0YTogaW50ZXJhY3Rpb24uZGF0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaWYgdGhlIGxpbmsgZXZhbHVhdGVzIGFzIGVtcHR5LCB0aGVuIGRvbid0IGdvIGFueXdoZXJlXG4gICAgICAgIGlmICghaHJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcGVydGllcy5uZXdXaW5kb3cpIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93Lm9wZW4oaHJlZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHJlZjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==