moved config to seperate module
This commit is contained in:
parent
b1516193a5
commit
c86b09e26e
3 changed files with 135 additions and 92 deletions
|
@ -0,0 +1,10 @@
|
||||||
|
import { Component, Output, Input } from 'angular-ts-decorators';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'linearWorkflow',
|
||||||
|
templateUrl: '/static/js/directives/ui/linear-workflow/linear-workflow.component.html'
|
||||||
|
})
|
||||||
|
export class LinearWorkflowComponent implements ng.IComponentController {
|
||||||
|
|
||||||
|
}
|
116
static/js/quay.config.ts
Normal file
116
static/js/quay.config.ts
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
import { NgModule } from 'angular-ts-decorators';
|
||||||
|
import { INJECTED_CONFIG, INJECTED_FEATURES, INJECTED_ENDPOINTS } from "./constants/injected-values.constant";
|
||||||
|
import { NAME_PATTERNS } from "./constants/name-patterns.constant";
|
||||||
|
import * as Raven from "raven-js";
|
||||||
|
import * as angular from 'angular';
|
||||||
|
|
||||||
|
|
||||||
|
var quayDependencies: any[] = [
|
||||||
|
'chieffancypants.loadingBar',
|
||||||
|
'cfp.hotkeys',
|
||||||
|
'angular-tour',
|
||||||
|
'restangular',
|
||||||
|
'angularMoment',
|
||||||
|
'mgcrea.ngStrap',
|
||||||
|
'ngCookies',
|
||||||
|
'ngSanitize',
|
||||||
|
'angular-md5',
|
||||||
|
'pasvaz.bindonce',
|
||||||
|
'ansiToHtml',
|
||||||
|
'core-ui',
|
||||||
|
'core-config-setup',
|
||||||
|
'infinite-scroll',
|
||||||
|
'react'
|
||||||
|
];
|
||||||
|
|
||||||
|
if (INJECTED_CONFIG && (INJECTED_CONFIG.MIXPANEL_KEY ||
|
||||||
|
INJECTED_CONFIG.MUNCHKIN_KEY ||
|
||||||
|
INJECTED_CONFIG.GOOGLE_ANALYTICS_KEY)) {
|
||||||
|
quayDependencies.push('angulartics');
|
||||||
|
}
|
||||||
|
if (INJECTED_CONFIG && INJECTED_CONFIG.MIXPANEL_KEY) {
|
||||||
|
quayDependencies.push('angulartics.mixpanel');
|
||||||
|
}
|
||||||
|
if (INJECTED_CONFIG && INJECTED_CONFIG.MUNCHKIN_KEY) {
|
||||||
|
quayDependencies.push('angulartics.marketo');
|
||||||
|
}
|
||||||
|
if (INJECTED_CONFIG && INJECTED_CONFIG.GOOGLE_ANALYTICS_KEY) {
|
||||||
|
quayDependencies.push('angulartics.google.analytics');
|
||||||
|
}
|
||||||
|
if (INJECTED_CONFIG && INJECTED_CONFIG.RECAPTCHA_SITE_KEY) {
|
||||||
|
quayDependencies.push('vcRecaptcha');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module for application-wide configuration.
|
||||||
|
*/
|
||||||
|
@NgModule({
|
||||||
|
imports: quayDependencies,
|
||||||
|
declarations: [],
|
||||||
|
providers: []
|
||||||
|
})
|
||||||
|
export class QuayConfig {
|
||||||
|
|
||||||
|
public config($provide: ng.auto.IProvideService,
|
||||||
|
$injector: ng.auto.IInjectorService,
|
||||||
|
INJECTED_CONFIG: any,
|
||||||
|
cfpLoadingBarProvider: any,
|
||||||
|
$tooltipProvider: any,
|
||||||
|
$compileProvider: ng.ICompileProvider,
|
||||||
|
RestangularProvider: any): void {
|
||||||
|
cfpLoadingBarProvider.includeSpinner = false;
|
||||||
|
|
||||||
|
// decorate the tooltip getter
|
||||||
|
var tooltipFactory: any = $tooltipProvider.$get[$tooltipProvider.$get.length - 1];
|
||||||
|
$tooltipProvider.$get[$tooltipProvider.$get.length - 1] = function($window: ng.IWindowService) {
|
||||||
|
if ('ontouchstart' in $window) {
|
||||||
|
var existing: any = tooltipFactory.apply(this, arguments);
|
||||||
|
return function(element) {
|
||||||
|
// Note: We only disable bs-tooltip's themselves. $tooltip is used for other things
|
||||||
|
// (such as the datepicker), so we need to be specific when canceling it.
|
||||||
|
if (element !== undefined && element.attr('bs-tooltip') == null) {
|
||||||
|
return existing.apply(this, arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return tooltipFactory.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!INJECTED_CONFIG['DEBUG']) {
|
||||||
|
$compileProvider.debugInfoEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure compile provider to add additional URL prefixes to the sanitization list. We use
|
||||||
|
// these on the Contact page.
|
||||||
|
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|irc):/);
|
||||||
|
|
||||||
|
// Configure the API provider.
|
||||||
|
RestangularProvider.setBaseUrl('/api/v1/');
|
||||||
|
|
||||||
|
// Configure analytics.
|
||||||
|
if (INJECTED_CONFIG && INJECTED_CONFIG.MIXPANEL_KEY) {
|
||||||
|
let $analyticsProvider: any = $injector.get('$analyticsProvider');
|
||||||
|
$analyticsProvider.virtualPageviews(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure sentry.
|
||||||
|
if (INJECTED_CONFIG && INJECTED_CONFIG.SENTRY_PUBLIC_DSN) {
|
||||||
|
$provide.decorator("$exceptionHandler", function($delegate) {
|
||||||
|
return function(ex, cause) {
|
||||||
|
$delegate(ex, cause);
|
||||||
|
Raven.captureException(ex, {extra: {cause: cause}});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
angular
|
||||||
|
.module(QuayConfig.name)
|
||||||
|
.constant('NAME_PATTERNS', NAME_PATTERNS)
|
||||||
|
.constant('INJECTED_CONFIG', INJECTED_CONFIG)
|
||||||
|
.constant('INJECTED_FEATURES', INJECTED_FEATURES)
|
||||||
|
.constant('INJECTED_ENDPOINTS', INJECTED_ENDPOINTS);
|
|
@ -1,5 +1,4 @@
|
||||||
import * as angular from "angular";
|
import * as angular from "angular";
|
||||||
import * as Raven from "raven-js";
|
|
||||||
import { ViewArrayImpl } from "./services/view-array/view-array.impl";
|
import { ViewArrayImpl } from "./services/view-array/view-array.impl";
|
||||||
import { NAME_PATTERNS } from "./constants/name-patterns.constant";
|
import { NAME_PATTERNS } from "./constants/name-patterns.constant";
|
||||||
import { INJECTED_CONFIG, INJECTED_FEATURES, INJECTED_ENDPOINTS } from "./constants/injected-values.constant";
|
import { INJECTED_CONFIG, INJECTED_FEATURES, INJECTED_ENDPOINTS } from "./constants/injected-values.constant";
|
||||||
|
@ -9,56 +8,24 @@ import { QuayRoutes } from "./quay-routes.module";
|
||||||
import { DockerfilePathSelectComponent } from './directives/ui/dockerfile-path-select/dockerfile-path-select.component';
|
import { DockerfilePathSelectComponent } from './directives/ui/dockerfile-path-select/dockerfile-path-select.component';
|
||||||
import { ManageTriggerCustomGitComponent } from './directives/ui/manage-trigger-custom-git/manage-trigger-custom-git.component';
|
import { ManageTriggerCustomGitComponent } from './directives/ui/manage-trigger-custom-git/manage-trigger-custom-git.component';
|
||||||
import { ManageTriggerGithostComponent } from './directives/ui/manage-trigger-githost/manage-trigger-githost.component';
|
import { ManageTriggerGithostComponent } from './directives/ui/manage-trigger-githost/manage-trigger-githost.component';
|
||||||
|
import { LinearWorkflowComponent } from './directives/ui/linear-workflow/linear-workflow.component';
|
||||||
|
import { QuayConfig } from './quay.config';
|
||||||
var quayDependencies: any[] = [
|
|
||||||
QuayRoutes,
|
|
||||||
'chieffancypants.loadingBar',
|
|
||||||
'cfp.hotkeys',
|
|
||||||
'angular-tour',
|
|
||||||
'restangular',
|
|
||||||
'angularMoment',
|
|
||||||
'mgcrea.ngStrap',
|
|
||||||
'ngCookies',
|
|
||||||
'ngSanitize',
|
|
||||||
'angular-md5',
|
|
||||||
'pasvaz.bindonce',
|
|
||||||
'ansiToHtml',
|
|
||||||
'core-ui',
|
|
||||||
'core-config-setup',
|
|
||||||
'infinite-scroll',
|
|
||||||
'react'
|
|
||||||
];
|
|
||||||
|
|
||||||
if (INJECTED_CONFIG && (INJECTED_CONFIG.MIXPANEL_KEY ||
|
|
||||||
INJECTED_CONFIG.MUNCHKIN_KEY ||
|
|
||||||
INJECTED_CONFIG.GOOGLE_ANALYTICS_KEY)) {
|
|
||||||
quayDependencies.push('angulartics');
|
|
||||||
}
|
|
||||||
if (INJECTED_CONFIG && INJECTED_CONFIG.MIXPANEL_KEY) {
|
|
||||||
quayDependencies.push('angulartics.mixpanel');
|
|
||||||
}
|
|
||||||
if (INJECTED_CONFIG && INJECTED_CONFIG.MUNCHKIN_KEY) {
|
|
||||||
quayDependencies.push('angulartics.marketo');
|
|
||||||
}
|
|
||||||
if (INJECTED_CONFIG && INJECTED_CONFIG.GOOGLE_ANALYTICS_KEY) {
|
|
||||||
quayDependencies.push('angulartics.google.analytics');
|
|
||||||
}
|
|
||||||
if (INJECTED_CONFIG && INJECTED_CONFIG.RECAPTCHA_SITE_KEY) {
|
|
||||||
quayDependencies.push('vcRecaptcha');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main application module.
|
* Main application module.
|
||||||
*/
|
*/
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: quayDependencies,
|
imports: [
|
||||||
|
QuayRoutes,
|
||||||
|
QuayConfig,
|
||||||
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
RegexMatchViewComponent,
|
RegexMatchViewComponent,
|
||||||
DockerfilePathSelectComponent,
|
DockerfilePathSelectComponent,
|
||||||
ManageTriggerCustomGitComponent,
|
ManageTriggerCustomGitComponent,
|
||||||
ManageTriggerGithostComponent,
|
ManageTriggerGithostComponent,
|
||||||
|
LinearWorkflowComponent,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
ViewArrayImpl,
|
ViewArrayImpl,
|
||||||
|
@ -66,58 +33,8 @@ if (INJECTED_CONFIG && INJECTED_CONFIG.RECAPTCHA_SITE_KEY) {
|
||||||
})
|
})
|
||||||
export class quay {
|
export class quay {
|
||||||
|
|
||||||
public config($provide: ng.auto.IProvideService,
|
constructor() {
|
||||||
$injector: ng.auto.IInjectorService,
|
|
||||||
INJECTED_CONFIG: any,
|
|
||||||
cfpLoadingBarProvider: any,
|
|
||||||
$tooltipProvider: any,
|
|
||||||
$compileProvider: ng.ICompileProvider,
|
|
||||||
RestangularProvider: any): void {
|
|
||||||
cfpLoadingBarProvider.includeSpinner = false;
|
|
||||||
|
|
||||||
// decorate the tooltip getter
|
|
||||||
var tooltipFactory: any = $tooltipProvider.$get[$tooltipProvider.$get.length - 1];
|
|
||||||
$tooltipProvider.$get[$tooltipProvider.$get.length - 1] = function($window: ng.IWindowService) {
|
|
||||||
if ('ontouchstart' in $window) {
|
|
||||||
var existing: any = tooltipFactory.apply(this, arguments);
|
|
||||||
return function(element) {
|
|
||||||
// Note: We only disable bs-tooltip's themselves. $tooltip is used for other things
|
|
||||||
// (such as the datepicker), so we need to be specific when canceling it.
|
|
||||||
if (element !== undefined && element.attr('bs-tooltip') == null) {
|
|
||||||
return existing.apply(this, arguments);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return tooltipFactory.apply(this, arguments);
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!INJECTED_CONFIG['DEBUG']) {
|
|
||||||
$compileProvider.debugInfoEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure compile provider to add additional URL prefixes to the sanitization list. We use
|
|
||||||
// these on the Contact page.
|
|
||||||
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|irc):/);
|
|
||||||
|
|
||||||
// Configure the API provider.
|
|
||||||
RestangularProvider.setBaseUrl('/api/v1/');
|
|
||||||
|
|
||||||
// Configure analytics.
|
|
||||||
if (INJECTED_CONFIG && INJECTED_CONFIG.MIXPANEL_KEY) {
|
|
||||||
let $analyticsProvider: any = $injector.get('$analyticsProvider');
|
|
||||||
$analyticsProvider.virtualPageviews(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure sentry.
|
|
||||||
if (INJECTED_CONFIG && INJECTED_CONFIG.SENTRY_PUBLIC_DSN) {
|
|
||||||
$provide.decorator("$exceptionHandler", function($delegate) {
|
|
||||||
return function(ex, cause) {
|
|
||||||
$delegate(ex, cause);
|
|
||||||
Raven.captureException(ex, {extra: {cause: cause}});
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public run($rootScope: QuayRunScope,
|
public run($rootScope: QuayRunScope,
|
||||||
|
@ -239,7 +156,7 @@ interface QuayRunScope extends ng.IRootScopeService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: Move component registration to @NgModule and remove this.
|
// TODO: Make injected values into services and move to NgModule.providers, as constants are not supported in Angular 2
|
||||||
angular
|
angular
|
||||||
.module(quay.name)
|
.module(quay.name)
|
||||||
.constant('NAME_PATTERNS', NAME_PATTERNS)
|
.constant('NAME_PATTERNS', NAME_PATTERNS)
|
||||||
|
|
Reference in a new issue