UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

44 lines 5.77 kB
function c8yAlertDecorator($delegate, $rootScope, $injector) { 'ngInject'; $delegate.add = alert => { $delegate.addAlert(transformAlert(alert)); }; $rootScope.$on('alert', (evt, alert) => { $delegate.addAlert(transformAlert(alert)); }); $rootScope.$on('message', (evt, alert) => { $delegate.addAlert(transformAlert(alert)); }); /** * Solution based on the: https://stackoverflow.com/questions/40102148/how-to-iterate-over-all-properties-in-objects-prototype-chain. * Problem came after switching to ES6, as all prototype properties of classes are non-enumerable. */ const allNames = new Set(); for (let o = $delegate; o !== Object.prototype; o = Object.getPrototypeOf(o)) { for (const name of Object.getOwnPropertyNames(o)) { allNames.add(name); } } Array.from(allNames).forEach((property) => { if (typeof $delegate[property] === 'function') { $delegate[property] = $delegate[property].bind($delegate); } }); function transformAlert(alert) { const newAlert = { ...alert }; if (alert.onClose) { newAlert.onClose = () => { $injector.invoke(alert.onClose); }; } if (alert.onDetail) { newAlert.onDetail = () => { $injector.invoke(alert.onDetail); }; } return newAlert; } return $delegate; } export { c8yAlertDecorator }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdXBncmFkZS9uZzEvYWxlcnQuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTO0lBQ3pELFVBQVUsQ0FBQztJQUVYLFNBQVMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDdEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyQyxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVIOzs7T0FHRztJQUNILE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pELFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNoRCxJQUFJLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsY0FBYyxDQUFDLEtBQVU7UUFDaEMsTUFBTSxRQUFRLEdBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUN0QixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsUUFBUSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7Z0JBQ3ZCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gYzh5QWxlcnREZWNvcmF0b3IoJGRlbGVnYXRlLCAkcm9vdFNjb3BlLCAkaW5qZWN0b3IpIHtcclxuICAnbmdJbmplY3QnO1xyXG5cclxuICAkZGVsZWdhdGUuYWRkID0gYWxlcnQgPT4ge1xyXG4gICAgJGRlbGVnYXRlLmFkZEFsZXJ0KHRyYW5zZm9ybUFsZXJ0KGFsZXJ0KSk7XHJcbiAgfTtcclxuXHJcbiAgJHJvb3RTY29wZS4kb24oJ2FsZXJ0JywgKGV2dCwgYWxlcnQpID0+IHtcclxuICAgICRkZWxlZ2F0ZS5hZGRBbGVydCh0cmFuc2Zvcm1BbGVydChhbGVydCkpO1xyXG4gIH0pO1xyXG5cclxuICAkcm9vdFNjb3BlLiRvbignbWVzc2FnZScsIChldnQsIGFsZXJ0KSA9PiB7XHJcbiAgICAkZGVsZWdhdGUuYWRkQWxlcnQodHJhbnNmb3JtQWxlcnQoYWxlcnQpKTtcclxuICB9KTtcclxuXHJcbiAgLyoqXHJcbiAgICogU29sdXRpb24gYmFzZWQgb24gdGhlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDEwMjE0OC9ob3ctdG8taXRlcmF0ZS1vdmVyLWFsbC1wcm9wZXJ0aWVzLWluLW9iamVjdHMtcHJvdG90eXBlLWNoYWluLlxyXG4gICAqIFByb2JsZW0gY2FtZSBhZnRlciBzd2l0Y2hpbmcgdG8gRVM2LCBhcyBhbGwgcHJvdG90eXBlIHByb3BlcnRpZXMgb2YgY2xhc3NlcyBhcmUgbm9uLWVudW1lcmFibGUuXHJcbiAgICovXHJcbiAgY29uc3QgYWxsTmFtZXMgPSBuZXcgU2V0KCk7XHJcbiAgZm9yIChsZXQgbyA9ICRkZWxlZ2F0ZTsgbyAhPT0gT2JqZWN0LnByb3RvdHlwZTsgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKSkge1xyXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pKSB7XHJcbiAgICAgIGFsbE5hbWVzLmFkZChuYW1lKTtcclxuICAgIH1cclxuICB9XHJcbiAgQXJyYXkuZnJvbShhbGxOYW1lcykuZm9yRWFjaCgocHJvcGVydHk6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKHR5cGVvZiAkZGVsZWdhdGVbcHJvcGVydHldID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICRkZWxlZ2F0ZVtwcm9wZXJ0eV0gPSAkZGVsZWdhdGVbcHJvcGVydHldLmJpbmQoJGRlbGVnYXRlKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgZnVuY3Rpb24gdHJhbnNmb3JtQWxlcnQoYWxlcnQ6IGFueSkge1xyXG4gICAgY29uc3QgbmV3QWxlcnQ6IGFueSA9IHsgLi4uYWxlcnQgfTtcclxuICAgIGlmIChhbGVydC5vbkNsb3NlKSB7XHJcbiAgICAgIG5ld0FsZXJ0Lm9uQ2xvc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgJGluamVjdG9yLmludm9rZShhbGVydC5vbkNsb3NlKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChhbGVydC5vbkRldGFpbCkge1xyXG4gICAgICBuZXdBbGVydC5vbkRldGFpbCA9ICgpID0+IHtcclxuICAgICAgICAkaW5qZWN0b3IuaW52b2tlKGFsZXJ0Lm9uRGV0YWlsKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdBbGVydDtcclxuICB9XHJcblxyXG4gIHJldHVybiAkZGVsZWdhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCB7IGM4eUFsZXJ0RGVjb3JhdG9yIH07XHJcbiJdfQ==