private AngularSpaResponseViewModel GetDevelopmentReponseViewModel() { var result = new AngularSpaResponseViewModel(); StylesheetData defaultThemeData = null; var vendorCss = new StylesheetData { StylesheetUrl = this.GetDevelopmentAssetUrl("vendor.css") }; var mainCss = new StylesheetData { StylesheetUrl = this.GetDevelopmentAssetUrl("main.css") }; var manifestScript = this.GetDevelopmentAssetUrl("manifest.js"); var polyfillsScript = this.GetDevelopmentAssetUrl("polyfills.js"); var vendorScript = this.GetDevelopmentAssetUrl("vendor.js"); var mainScript = this.GetDevelopmentAssetUrl("main.js"); var themes = this.GetDeserializedThemes(); var themeDatas = new List <ThemeData>(); foreach (var theme in themes) { var themeData = new ThemeData { ThemeId = theme.id, IsDefault = theme.is_default, StylesheetUrl = this.GetDevelopmentAssetUrl(theme.filename + ".css"), UIMainColor = theme.ui_main_color, UIDescription = theme.ui_description }; themeDatas.Add(themeData); if (themeData.IsDefault) { defaultThemeData = new StylesheetData { IsTheme = true, StylesheetUrl = themeData.StylesheetUrl }; } } result.Themes = themeDatas; result.Stylesheets = new StylesheetData[3] { defaultThemeData, vendorCss, mainCss }; result.Scripts = new string[4] { manifestScript, polyfillsScript, vendorScript, mainScript }; return(result); }
public ActionResult Index() { // If debugging is enabled, consider the app in development mode var isInDevelopment = HttpContext.IsDebuggingEnabled; AngularSpaResponseViewModel result = null; if (isInDevelopment) { result = this.GetDevelopmentReponseViewModel(); } else { result = this.GetProductionResponseViewModel(); } return(View(result)); }
private AngularSpaResponseViewModel GetProductionResponseViewModel() { var result = new AngularSpaResponseViewModel(); var webpackAssetsPath = Server.MapPath("~/Content/dist/webpack-assets.json"); string webpackAssetsJson = JsonHelper.ReadJsonFile(webpackAssetsPath); var assets = JsonConvert.DeserializeObject <Dictionary <string, dynamic> >(webpackAssetsJson); var stylesheets = new List <StylesheetData>(); var scriptUrls = new List <string>(); dynamic manifestData; if (assets.TryGetValue("manifest", out manifestData)) { scriptUrls.Add(manifestData.js.ToString()); } dynamic polyfillData; if (assets.TryGetValue("polyfills", out polyfillData)) { scriptUrls.Add(polyfillData.js.ToString()); } dynamic vendorData; if (assets.TryGetValue("vendor", out vendorData)) { stylesheets.Add(new StylesheetData { IsTheme = false, StylesheetUrl = vendorData.css.ToString() }); scriptUrls.Add(vendorData.js.ToString()); } dynamic mainData; if (assets.TryGetValue("main", out mainData)) { stylesheets.Add(new StylesheetData { IsTheme = false, StylesheetUrl = mainData.css.ToString() }); scriptUrls.Add(mainData.js.ToString()); } var themes = this.GetDeserializedThemes(); var themeDatas = new List <ThemeData>(); foreach (var theme in themes) { dynamic themeAsset; if (assets.TryGetValue(theme.filename, out themeAsset)) { var themeData = new ThemeData { ThemeId = theme.id, IsDefault = theme.is_default, StylesheetUrl = themeAsset.css.ToString(), UIMainColor = theme.ui_main_color, UIDescription = theme.ui_description }; if (themeData.IsDefault) { stylesheets.Insert(0, new StylesheetData { IsTheme = true, StylesheetUrl = themeData.StylesheetUrl }); } themeDatas.Add(themeData); } } result.Stylesheets = stylesheets; result.Scripts = scriptUrls; result.Themes = themeDatas; return(result); }