subscriptions
Version:
SLB
314 lines (313 loc) • 12 kB
JavaScript
import { Component, Injectable, Input, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Store, StoreModule, createFeatureSelector, createSelector } from '@ngrx/store';
import { Actions, Effect, EffectsModule } from '@ngrx/effects';
import { RouterModule } from '@angular/router';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/startWith';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toArray';
import 'rxjs/add/observable/of';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/do';
import 'rxjs/add/observable/throw';
import { HttpInterceptorService } from '@covalent/http/index';
import { FormsModule } from '@angular/forms';
import { MaterialModule } from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout/index';
import 'hammerjs';
var LOAD_SUBSCRIPTION = '[subscription] LOAD_SUBSCRIPTION';
var LOAD_SUBSCRIPTION_SUCCESS = '[subscription] LOAD_SUBSCRIPTION_SUCCESS';
var LOAD_SUBSCRIPTION_FAILURE = '[subscription] LOAD_SUBSCRIPTION_FAILURE';
var LoadSubscription = (function () {
function LoadSubscription() {
this.type = LOAD_SUBSCRIPTION;
}
return LoadSubscription;
}());
var LoadSubscriptionSuccess = (function () {
/**
* @param {?=} payload
*/
function LoadSubscriptionSuccess(payload) {
this.payload = payload;
this.type = LOAD_SUBSCRIPTION_SUCCESS;
}
return LoadSubscriptionSuccess;
}());
var LoadSubscriptionFailure = (function () {
/**
* @param {?=} payload
*/
function LoadSubscriptionFailure(payload) {
this.payload = payload;
this.type = LOAD_SUBSCRIPTION_FAILURE;
}
return LoadSubscriptionFailure;
}());
var initialState = {
subscriptions: [],
loading: false
};
/**
* @param {?=} state
* @param {?=} action
* @return {?}
*/
function reducer(state, action) {
if (state === void 0) { state = initialState; }
switch (action.type) {
case LOAD_SUBSCRIPTION: {
return Object.assign({}, state, {
loading: true
});
}
case LOAD_SUBSCRIPTION_SUCCESS: {
var /** @type {?} */ subscriptions = action.payload;
return {
subscriptions: subscriptions,
loading: false
};
}
case LOAD_SUBSCRIPTION_FAILURE: {
var /** @type {?} */ subscriptions = [];
return {
subscriptions: subscriptions,
loading: false
};
}
default:
return state;
}
}
var getsubscriptions = function (state) { return state.subscriptions; };
var getloading = function (state) { return state.loading; };
var reducers = {
subscriptionsState: reducer,
};
var selectFeatureModule = createFeatureSelector('subscriptions');
var selectFeatureState = createSelector(selectFeatureModule, function (state) { return state.subscriptionsState; });
var getSubscriptionsStateSubscriptions = createSelector(selectFeatureState, getsubscriptions);
var getSubscriptionsStateLoading = createSelector(selectFeatureState, getloading);
var SubscriptionsLogicComponent = (function () {
/**
* @param {?} store
*/
function SubscriptionsLogicComponent(store) {
this.store = store;
this.subscriptions$ = store.select(getSubscriptionsStateSubscriptions);
this.isLoading$ = store.select(getSubscriptionsStateLoading);
}
/**
* @return {?}
*/
SubscriptionsLogicComponent.prototype.ngOnInit = function () {
this.store.dispatch(new LoadSubscription());
};
return SubscriptionsLogicComponent;
}());
SubscriptionsLogicComponent.decorators = [
{ type: Component, args: [{
selector: 'slb-subscriptions-logic',
template: "\n <slb-subscriptions [subscriptions]=\"subscriptions$ | async\" [loading]=\"isLoading$ | async\"></slb-subscriptions>\n "
},] },
];
/**
* @nocollapse
*/
SubscriptionsLogicComponent.ctorParameters = function () { return [
{ type: Store, },
]; };
var routes = [
{ path: '', component: SubscriptionsLogicComponent }
];
var SubscriptionsRoutingModule = (function () {
function SubscriptionsRoutingModule() {
}
return SubscriptionsRoutingModule;
}());
SubscriptionsRoutingModule.decorators = [
{ type: NgModule, args: [{
imports: [
RouterModule.forChild(routes),
],
exports: [RouterModule]
},] },
];
/**
* @nocollapse
*/
SubscriptionsRoutingModule.ctorParameters = function () { return []; };
var SubscriptionsComponent = (function () {
function SubscriptionsComponent() {
}
/**
* @return {?}
*/
SubscriptionsComponent.prototype.checkForSubscriptions = function () {
if (this.subscriptions && this.subscriptions.length === 0) {
return true;
}
else {
return false;
}
};
return SubscriptionsComponent;
}());
SubscriptionsComponent.decorators = [
{ type: Component, args: [{
selector: 'slb-subscriptions',
template: "<md-spinner [class.show]=\"loading\" *ngIf=\"loading\"></md-spinner> <div *ngIf=\"!loading\"> <div class=\"cards-view\" fxLayout=\"row\" fxLayoutWrap fxLayoutGap=\"20px\" *ngIf=\"!checkForSubscriptions(); else message\"> <md-card class=\"card\" *ngFor=\"let tile of subscriptions;let i = index\"> <img class=\"card-image\" md-card-image src=\"assets/images/Petrel_1.PNG\"> <md-card-content> <h3 md-line>{{tile.name}}</h3> <p md-line>Active Until - {{tile.expiration | date}}</p> </md-card-content> <md-card-actions> <div fxLayout=\"row\"> <a href=\"{{tile.launcherUrl}}\" target=\"_blank\"> <button md-button color=\"primary\">Launch</button> </a> </div> </md-card-actions> </md-card> </div> <ng-template #message> <p class=\"no-subscription\">No subscription found</p> </ng-template> </div> ",
styles: ["md-spinner { width: 4.5em; } .cards-view { padding: 30px; } .card { border-radius: 5px; margin-bottom: 10px; } .card-image { width: 250px; height: 140px; border-radius: 5px 5px 0 0; } .no-subscription { position: absolute; top: 50%; left: 50%; }"],
},] },
];
/**
* @nocollapse
*/
SubscriptionsComponent.ctorParameters = function () { return []; };
SubscriptionsComponent.propDecorators = {
'subscriptions': [{ type: Input },],
'loading': [{ type: Input },],
};
var SubscriptionsService = (function () {
/**
* @param {?} httpInterceptorService
*/
function SubscriptionsService(httpInterceptorService) {
this.httpInterceptorService = httpInterceptorService;
}
/**
* @return {?}
*/
SubscriptionsService.prototype.getSubscriptions = function () {
return this.httpInterceptorService.get('subscriptions')
.map(function (res) {
var /** @type {?} */ body = res.json();
// TODO: check at runtime that body matches the structure of Sub
return body;
});
};
;
/**
* @param {?} error
* @return {?}
*/
SubscriptionsService.prototype.handleError = function (error) {
// in a real world app, we should consider to some remote logging infrastructure
// instead of just logging it to the console
return Observable.throw(error.json().error || 'Server error');
};
return SubscriptionsService;
}());
SubscriptionsService.decorators = [
{ type: Injectable },
];
/**
* @nocollapse
*/
SubscriptionsService.ctorParameters = function () { return [
{ type: HttpInterceptorService, },
]; };
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var SubscriptionEffects = (function () {
/**
* @param {?} actions$
* @param {?} subscriptionsService
*/
function SubscriptionEffects(actions$, subscriptionsService) {
var _this = this;
this.actions$ = actions$;
this.subscriptionsService = subscriptionsService;
this.loadSubscriptions$ = this.actions$
.ofType(LOAD_SUBSCRIPTION)
.switchMap(function () { return _this.subscriptionsService.getSubscriptions().toArray()
.map(function (subscriptions) { return new LoadSubscriptionSuccess(subscriptions[0]); })
.catch(function (error) { return Observable.of(new LoadSubscriptionFailure(error)); }); });
}
return SubscriptionEffects;
}());
SubscriptionEffects.decorators = [
{ type: Injectable },
];
/**
* @nocollapse
*/
SubscriptionEffects.ctorParameters = function () { return [
{ type: Actions, },
{ type: SubscriptionsService, },
]; };
__decorate([
Effect()
], SubscriptionEffects.prototype, "loadSubscriptions$", void 0);
var SharedModule = (function () {
function SharedModule() {
}
return SharedModule;
}());
SharedModule.decorators = [
{ type: NgModule, args: [{
declarations: [],
imports: [
CommonModule,
MaterialModule,
FormsModule,
FlexLayoutModule,
RouterModule
],
exports: [
CommonModule,
MaterialModule,
FormsModule,
FlexLayoutModule,
RouterModule
],
providers: [],
},] },
];
/**
* @nocollapse
*/
SharedModule.ctorParameters = function () { return []; };
var SubscriptionsModule = (function () {
function SubscriptionsModule() {
}
return SubscriptionsModule;
}());
SubscriptionsModule.decorators = [
{ type: NgModule, args: [{
declarations: [
SubscriptionsLogicComponent,
SubscriptionsComponent,
],
imports: [
CommonModule,
SubscriptionsRoutingModule,
StoreModule.forFeature('subscriptions', reducers, {}),
EffectsModule.forFeature([SubscriptionEffects]),
SharedModule,
],
exports: [
SubscriptionsLogicComponent
],
providers: [SubscriptionsService],
},] },
];
/**
* @nocollapse
*/
SubscriptionsModule.ctorParameters = function () { return []; };
/**
* Generated bundle index. Do not edit.
*/
export { SubscriptionsModule, reducers, selectFeatureModule, selectFeatureState, getSubscriptionsStateSubscriptions, getSubscriptionsStateLoading, LOAD_SUBSCRIPTION, LOAD_SUBSCRIPTION_SUCCESS, LOAD_SUBSCRIPTION_FAILURE, LoadSubscription, LoadSubscriptionSuccess, LoadSubscriptionFailure, initialState, reducer, getsubscriptions, getloading, SharedModule as ɵg, SubscriptionEffects as ɵe, SubscriptionsLogicComponent as ɵa, SubscriptionsComponent as ɵb, SubscriptionsRoutingModule as ɵd, routes as ɵc, SubscriptionsService as ɵf };
//# sourceMappingURL=subscriptions.es5.js.map