Shimano Ultegra 6600/Mavic Wheelset
10173
All of our wheels are hand-finished by our professional wheel builders.
Error compiling template "Designs/Swift/Paragraph/Swift_ProductVariantSelector.cshtml" Line 793: 'VariantOptionViewModel' does not contain a definition for 'OptionImage' and no accessible extension method 'OptionImage' accepting a first argument of type 'VariantOptionViewModel' could be found (are you missing a using directive or an assembly reference?)
1 //------------------------------------------------------------------------------ 2 // <auto-generated> 3 // This code was generated by a tool. 4 // Runtime Version:4.0.30319.42000 5 // 6 // Changes to this file may cause incorrect behavior and will be lost if 7 // the code is regenerated. 8 // </auto-generated> 9 //------------------------------------------------------------------------------ 10 11 namespace CompiledRazorTemplates.Dynamic { 12 using System; 13 14 #line 2 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 15 using System.Collections.Generic; 16 17 #line default 18 #line hidden 19 20 #line 3 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 21 using System.Linq; 22 23 #line default 24 #line hidden 25 26 #line 4 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 27 using Dynamicweb.Ecommerce.ProductCatalog; 28 29 #line default 30 #line hidden 31 32 #line 5 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 33 using Dynamicweb.Ecommerce.Variants; 34 35 #line default 36 #line hidden 37 38 39 public class RazorEngine_15776b5b69ed4edfad80179e45b256e6 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> { 40 41 #line hidden 42 43 #line 7 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 44 45 //Find contrast color (white, black) 46 public static string GetContrastColor(string hexString) 47 { 48 System.Drawing.Color bg = System.Drawing.ColorTranslator.FromHtml(hexString); 49 50 int nThreshold = 105; 51 int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) + 52 (bg.B * 0.114)); 53 54 string foreColor = (255 - bgDelta < nThreshold) ? "#333" : "#fff"; 55 return foreColor; 56 } 57 58 public string GetLayoutForVariantGroup(string variantGroupId) 59 { 60 string showVariantGroups = !string.IsNullOrEmpty(Model.Item.GetString("ShowVariantGroupOptions")) ? Model.Item.GetString("ShowVariantGroupOptions") : "all"; 61 string defaultVariantGroupLayout = Model.Item.GetRawValueString("DefaultVariantGroupLayout", "button"); 62 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>(); 63 64 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return defaultVariantGroupLayout; 65 66 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList) 67 { 68 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(','); 69 if (variantGroups.Any(s => s.Equals(variantGroupId))) return selectedVariantGroupListItem.GetRawValueString("VariantGroupLayout"); 70 } 71 72 return defaultVariantGroupLayout; 73 } 74 75 //Collect all variant images 76 public static Dictionary<string, string> GetVariantImages(List<VariantInfoViewModel> variantInfo, Dictionary<string, string> list) 77 { 78 foreach (var variantGroup in variantInfo) 79 { 80 if (variantGroup.Image?.Value != null && !list.ContainsKey(variantGroup.OptionID)) { 81 list.Add(variantGroup.OptionID, variantGroup.Image.Value); 82 } 83 84 if (variantGroup.VariantInfo != null) { 85 GetVariantImages(variantGroup.VariantInfo, list); 86 } 87 } 88 89 return list; 90 } 91 92 private string GetDefaultOrVariantGroupValue(string variantGroupId, string itemField, string itemFieldDefaultValue, Dictionary<string, string> fieldValueMapping) 93 { 94 string horizontalTextAlign = Model.Item.GetRawValueString(itemField, itemFieldDefaultValue); 95 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign; 96 97 // If no variantGroup (i.e. Visual Editor), return default value 98 if (string.IsNullOrEmpty(variantGroupId)) return horizontalTextAlign; 99 100 string showVariantGroups = Model.Item.GetString("ShowVariantGroupOptions", "all"); 101 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>(); 102 // If no exceptions or settings are all the same, return default value 103 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return horizontalTextAlign; 104 105 // Get specific value for variant group 106 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList) 107 { 108 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(','); 109 if (!variantGroups.Any(s => s.Equals(variantGroupId))) continue; 110 111 horizontalTextAlign = selectedVariantGroupListItem.GetRawValueString(itemField, itemFieldDefaultValue); 112 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign; 113 } 114 115 return horizontalTextAlign; 116 } 117 118 #line default 119 #line hidden 120 121 122 public RazorEngine_15776b5b69ed4edfad80179e45b256e6() { 123 } 124 125 public override void Execute() { 126 WriteLiteral("\r\n"); 127 128 WriteLiteral("\r\n"); 129 130 131 #line 82 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 132 133 ProductViewModel product = new ProductViewModel(); 134 135 ProductViewModelSettings productSetting = new ProductViewModelSettings 136 { 137 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 138 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 139 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 140 ShopId = Pageview.Area.EcomShopId 141 }; 142 143 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 144 { 145 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 146 } 147 else if (Pageview.Item["DummyProduct"] != null) 148 { 149 150 string dummyProductId = ""; 151 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 152 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 153 if (productList.Products != null) 154 { 155 foreach (var p in productList.Products) { dummyProductId = p.Id; } 156 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel(); 157 product = dummyProduct; 158 } 159 else 160 { 161 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id); 162 } 163 } 164 else if (Pageview.Item["DummyProduct"] == null) 165 { 166 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id); 167 } 168 169 bool hideGroupHeaders = Model.Item.GetBoolean("HideGroupHeaders"); 170 171 172 #line default 173 #line hidden 174 WriteLiteral("\r\n\r\n"); 175 176 177 #line 122 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 178 if (product.Id != null) 179 { 180 var productVariantGroups = product.VariantGroups(); 181 182 if (productVariantGroups.Any()) 183 { 184 string[] variantId = product.VariantId.Split('.'); 185 int groupNumber = 1; 186 187 string baseUrl = $"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}"; 188 string variantUrl = ""; 189 if (!string.IsNullOrEmpty(product.VariantId)) 190 { 191 variantUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}&VariantID={product.VariantId}"); 192 } 193 194 Dictionary<string, string> variantImages = new Dictionary<string, string>(); 195 variantImages = GetVariantImages(product.VariantInfo.VariantInfo, variantImages); 196 197 198 199 #line default 200 #line hidden 201 WriteLiteral("\t\t<form"); 202 203 WriteAttribute("class", Tuple.Create(" class=\"", 6597), Tuple.Create("\"", 6687) 204 , Tuple.Create(Tuple.Create("", 6605), Tuple.Create("d-flex", 6605), true) 205 , Tuple.Create(Tuple.Create(" ", 6611), Tuple.Create("flex-column", 6612), true) 206 , Tuple.Create(Tuple.Create(" ", 6623), Tuple.Create("gap-2", 6624), true) 207 , Tuple.Create(Tuple.Create(" ", 6629), Tuple.Create("js-variant-selector", 6630), true) 208 , Tuple.Create(Tuple.Create(" ", 6649), Tuple.Create("item_", 6650), true) 209 210 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 211 , Tuple.Create(Tuple.Create("", 6655), Tuple.Create<System.Object, System.Int32>(Model.Item.SystemName.ToLower() 212 213 #line default 214 #line hidden 215 , 6655), false) 216 ); 217 218 WriteLiteral(" data-combinations=\""); 219 220 221 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 222 Write(string.Join(",", product.VariantCombinations())); 223 224 225 #line default 226 #line hidden 227 WriteLiteral("\""); 228 229 WriteLiteral(" data-base-url=\""); 230 231 232 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 233 Write(baseUrl); 234 235 236 #line default 237 #line hidden 238 WriteLiteral("\""); 239 240 WriteLiteral(" data-friendly-url=\""); 241 242 243 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 244 Write(variantUrl); 245 246 247 #line default 248 #line hidden 249 WriteLiteral("\""); 250 251 WriteLiteral(" >\r\n"); 252 253 254 #line 142 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 255 256 257 #line default 258 #line hidden 259 260 #line 142 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 261 foreach (var variantGroup in productVariantGroups) 262 { 263 VariantGroupViewModel group = variantGroup; 264 string variantGroupLayout = GetLayoutForVariantGroup(variantGroup.Id); 265 string horizontalAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } }); 266 string horizontalTextAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } }); 267 268 269 270 #line default 271 #line hidden 272 WriteLiteral("\t\t\t <div>\r\n"); 273 274 275 #line 150 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 276 277 278 #line default 279 #line hidden 280 281 #line 150 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 282 if (!hideGroupHeaders) 283 { 284 285 286 #line default 287 #line hidden 288 WriteLiteral("\t\t\t <h3"); 289 290 WriteAttribute("class", Tuple.Create(" class=\"", 7553), Tuple.Create("\"", 7584) 291 , Tuple.Create(Tuple.Create("", 7561), Tuple.Create("h6", 7561), true) 292 293 #line 152 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 294 , Tuple.Create(Tuple.Create(" ", 7563), Tuple.Create<System.Object, System.Int32>(horizontalTextAlign 295 296 #line default 297 #line hidden 298 , 7564), false) 299 ); 300 301 WriteLiteral(">"); 302 303 304 #line 152 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 305 Write(group.Name); 306 307 308 #line default 309 #line hidden 310 WriteLiteral("</h3>\r\n"); 311 312 313 #line 153 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 314 } 315 316 317 #line default 318 #line hidden 319 WriteLiteral("\t\t\t <div"); 320 321 WriteAttribute("class", Tuple.Create(" class=\"", 7633), Tuple.Create("\"", 7697) 322 , Tuple.Create(Tuple.Create("", 7641), Tuple.Create("d-flex", 7641), true) 323 , Tuple.Create(Tuple.Create(" ", 7647), Tuple.Create("gap-2", 7648), true) 324 325 #line 154 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 326 , Tuple.Create(Tuple.Create(" ", 7653), Tuple.Create<System.Object, System.Int32>(horizontalAlign 327 328 #line default 329 #line hidden 330 , 7654), false) 331 , Tuple.Create(Tuple.Create(" ", 7670), Tuple.Create("flex-wrap", 7671), true) 332 , Tuple.Create(Tuple.Create(" ", 7680), Tuple.Create("js-variant-group", 7681), true) 333 ); 334 335 WriteLiteral(" data-group-id=\""); 336 337 338 #line 154 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 339 Write(groupNumber); 340 341 342 #line default 343 #line hidden 344 WriteLiteral("\""); 345 346 WriteLiteral(">\r\n"); 347 348 349 #line 155 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 350 351 352 #line default 353 #line hidden 354 355 #line 155 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 356 if (variantGroupLayout == "button") 357 { 358 foreach (var option in group.Options) 359 { 360 string active = variantId != null && variantId.Contains(option.Id) ? "active" : ""; 361 string buttonId = $"{product.Id}_{option.Id}_{Pageview.CurrentParagraph.ID}"; 362 string contrastColor = string.Empty; 363 string optionLayout = optionLayout = GetDefaultOrVariantGroupValue(variantGroup.Id, "ButtonLayout", "rounded-circle", new Dictionary<string, string> { { "round", "rounded-circle" }, { "square", "" } }); 364 var displayType = group.DisplayType; 365 366 switch (displayType) 367 { 368 case VariantGroupDisplayType.VariantColor: 369 contrastColor = GetContrastColor(option.Color); 370 371 372 #line default 373 #line hidden 374 WriteLiteral("\t\t\t\t\t\t\t\t\t\t<button"); 375 376 WriteLiteral(" type=\"button\""); 377 378 WriteAttribute("class", Tuple.Create(" class=\"", 8518), Tuple.Create("\"", 8615) 379 , Tuple.Create(Tuple.Create("", 8526), Tuple.Create("btn", 8526), true) 380 , Tuple.Create(Tuple.Create(" ", 8529), Tuple.Create("colorbox", 8530), true) 381 382 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 383 , Tuple.Create(Tuple.Create(" ", 8538), Tuple.Create<System.Object, System.Int32>(optionLayout 384 385 #line default 386 #line hidden 387 , 8539), false) 388 , Tuple.Create(Tuple.Create(" ", 8552), Tuple.Create("d-inline-block", 8553), true) 389 , Tuple.Create(Tuple.Create(" ", 8567), Tuple.Create("variant-option", 8568), true) 390 , Tuple.Create(Tuple.Create(" ", 8582), Tuple.Create("border", 8583), true) 391 , Tuple.Create(Tuple.Create(" ", 8589), Tuple.Create("js-variant-option", 8590), true) 392 393 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 394 , Tuple.Create(Tuple.Create(" ", 8607), Tuple.Create<System.Object, System.Int32>(active 395 396 #line default 397 #line hidden 398 , 8608), false) 399 ); 400 401 WriteAttribute("style", Tuple.Create(" style=\"", 8616), Tuple.Create("\"", 8701) 402 , Tuple.Create(Tuple.Create("", 8624), Tuple.Create("background-color:", 8624), true) 403 404 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 405 , Tuple.Create(Tuple.Create(" ", 8641), Tuple.Create<System.Object, System.Int32>(option.Color 406 407 #line default 408 #line hidden 409 , 8642), false) 410 , Tuple.Create(Tuple.Create("", 8655), Tuple.Create(";", 8655), true) 411 , Tuple.Create(Tuple.Create(" ", 8656), Tuple.Create("--variantoption-check-color:", 8658), true) 412 413 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 414 , Tuple.Create(Tuple.Create(" ", 8686), Tuple.Create<System.Object, System.Int32>(contrastColor 415 416 #line default 417 #line hidden 418 , 8687), false) 419 ); 420 421 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 422 423 WriteLiteral(" data-variant-id=\""); 424 425 426 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 427 Write(option.Id); 428 429 430 #line default 431 #line hidden 432 WriteLiteral("\""); 433 434 WriteAttribute("id", Tuple.Create(" id=\"", 8782), Tuple.Create("\"", 8796) 435 436 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 437 , Tuple.Create(Tuple.Create("", 8787), Tuple.Create<System.Object, System.Int32>(buttonId 438 439 #line default 440 #line hidden 441 , 8787), false) 442 ); 443 444 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t<span"); 445 446 WriteLiteral(" class=\"visually-hidden\""); 447 448 WriteLiteral(">"); 449 450 451 #line 170 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 452 Write(option.Color); 453 454 455 #line default 456 #line hidden 457 WriteLiteral("</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 458 459 460 #line 172 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 461 break; 462 case VariantGroupDisplayType.VariantImage: 463 string variantImage = string.Empty; 464 if (variantImages.TryGetValue(option.Id, out variantImage)) 465 { 466 467 468 #line default 469 #line hidden 470 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button"); 471 472 WriteLiteral(" type=\"button\""); 473 474 WriteAttribute("class", Tuple.Create(" class=\"", 9120), Tuple.Create("\"", 9205) 475 , Tuple.Create(Tuple.Create("", 9128), Tuple.Create("btn", 9128), true) 476 , Tuple.Create(Tuple.Create(" ", 9131), Tuple.Create("p-0", 9132), true) 477 , Tuple.Create(Tuple.Create(" ", 9135), Tuple.Create("d-inline-block", 9136), true) 478 479 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 480 , Tuple.Create(Tuple.Create(" ", 9150), Tuple.Create<System.Object, System.Int32>(optionLayout 481 482 #line default 483 #line hidden 484 , 9151), false) 485 , Tuple.Create(Tuple.Create(" ", 9164), Tuple.Create("variant-option", 9165), true) 486 , Tuple.Create(Tuple.Create(" ", 9179), Tuple.Create("js-variant-option", 9180), true) 487 488 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 489 , Tuple.Create(Tuple.Create(" ", 9197), Tuple.Create<System.Object, System.Int32>(active 490 491 #line default 492 #line hidden 493 , 9198), false) 494 ); 495 496 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 497 498 WriteLiteral(" data-variant-id=\""); 499 500 501 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 502 Write(option.Id); 503 504 505 #line default 506 #line hidden 507 WriteLiteral("\""); 508 509 WriteAttribute("id", Tuple.Create(" id=\"", 9286), Tuple.Create("\"", 9347) 510 511 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 512 , Tuple.Create(Tuple.Create("", 9291), Tuple.Create<System.Object, System.Int32>(product.Id 513 514 #line default 515 #line hidden 516 , 9291), false) 517 , Tuple.Create(Tuple.Create("", 9304), Tuple.Create("_", 9304), true) 518 519 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 520 , Tuple.Create(Tuple.Create("", 9305), Tuple.Create<System.Object, System.Int32>(option.Id 521 522 #line default 523 #line hidden 524 , 9305), false) 525 , Tuple.Create(Tuple.Create("", 9317), Tuple.Create("_", 9317), true) 526 527 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 528 , Tuple.Create(Tuple.Create("", 9318), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 529 530 #line default 531 #line hidden 532 , 9318), false) 533 ); 534 535 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<img"); 536 537 WriteAttribute("class", Tuple.Create(" class=\"", 9367), Tuple.Create("\"", 9388) 538 539 #line 178 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 540 , Tuple.Create(Tuple.Create("", 9375), Tuple.Create<System.Object, System.Int32>(optionLayout 541 542 #line default 543 #line hidden 544 , 9375), false) 545 ); 546 547 WriteAttribute("src", Tuple.Create(" src=\"", 9389), Tuple.Create("\"", 9476) 548 , Tuple.Create(Tuple.Create("", 9395), Tuple.Create("/Admin/Public/GetImage.ashx?image=", 9395), true) 549 550 #line 178 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 551 , Tuple.Create(Tuple.Create("", 9429), Tuple.Create<System.Object, System.Int32>(variantImage 552 553 #line default 554 #line hidden 555 , 9429), false) 556 , Tuple.Create(Tuple.Create("", 9444), Tuple.Create("&width=42&Format=WebP&Quality=70", 9444), true) 557 ); 558 559 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 560 561 562 #line 180 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 563 } else { 564 565 566 #line default 567 #line hidden 568 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button"); 569 570 WriteLiteral(" type=\"button\""); 571 572 WriteAttribute("class", Tuple.Create(" class=\"", 9555), Tuple.Create("\"", 9636) 573 , Tuple.Create(Tuple.Create("", 9563), Tuple.Create("btn", 9563), true) 574 , Tuple.Create(Tuple.Create(" ", 9566), Tuple.Create("btn-secondary", 9567), true) 575 , Tuple.Create(Tuple.Create(" ", 9580), Tuple.Create("d-inline-block", 9581), true) 576 , Tuple.Create(Tuple.Create(" ", 9595), Tuple.Create("variant-option", 9596), true) 577 , Tuple.Create(Tuple.Create(" ", 9610), Tuple.Create("js-variant-option", 9611), true) 578 579 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 580 , Tuple.Create(Tuple.Create(" ", 9628), Tuple.Create<System.Object, System.Int32>(active 581 582 #line default 583 #line hidden 584 , 9629), false) 585 ); 586 587 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 588 589 WriteLiteral(" data-variant-id=\""); 590 591 592 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 593 Write(option.Id); 594 595 596 #line default 597 #line hidden 598 WriteLiteral("\""); 599 600 WriteAttribute("id", Tuple.Create(" id=\"", 9717), Tuple.Create("\"", 9778) 601 602 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 603 , Tuple.Create(Tuple.Create("", 9722), Tuple.Create<System.Object, System.Int32>(product.Id 604 605 #line default 606 #line hidden 607 , 9722), false) 608 , Tuple.Create(Tuple.Create("", 9735), Tuple.Create("_", 9735), true) 609 610 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 611 , Tuple.Create(Tuple.Create("", 9736), Tuple.Create<System.Object, System.Int32>(option.Id 612 613 #line default 614 #line hidden 615 , 9736), false) 616 , Tuple.Create(Tuple.Create("", 9748), Tuple.Create("_", 9748), true) 617 618 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 619 , Tuple.Create(Tuple.Create("", 9749), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 620 621 #line default 622 #line hidden 623 , 9749), false) 624 ); 625 626 WriteLiteral(">\r\n"); 627 628 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t\t"); 629 630 631 #line 182 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 632 Write(option.Name); 633 634 635 #line default 636 #line hidden 637 WriteLiteral("\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 638 639 640 #line 184 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 641 } 642 643 break; 644 case VariantGroupDisplayType.VariantName: 645 646 647 #line default 648 #line hidden 649 WriteLiteral("\t\t\t\t\t\t\t\t\t\t<button"); 650 651 WriteLiteral(" type=\"button\""); 652 653 WriteAttribute("class", Tuple.Create(" class=\"", 9946), Tuple.Create("\"", 10027) 654 , Tuple.Create(Tuple.Create("", 9954), Tuple.Create("btn", 9954), true) 655 , Tuple.Create(Tuple.Create(" ", 9957), Tuple.Create("btn-secondary", 9958), true) 656 , Tuple.Create(Tuple.Create(" ", 9971), Tuple.Create("d-inline-block", 9972), true) 657 , Tuple.Create(Tuple.Create(" ", 9986), Tuple.Create("variant-option", 9987), true) 658 , Tuple.Create(Tuple.Create(" ", 10001), Tuple.Create("js-variant-option", 10002), true) 659 660 #line 188 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 661 , Tuple.Create(Tuple.Create(" ", 10019), Tuple.Create<System.Object, System.Int32>(active 662 663 #line default 664 #line hidden 665 , 10020), false) 666 ); 667 668 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 669 670 WriteLiteral(" data-variant-id=\""); 671 672 673 #line 188 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 674 Write(option.Id); 675 676 677 #line default 678 #line hidden 679 WriteLiteral("\""); 680 681 WriteAttribute("id", Tuple.Create(" id=\"", 10108), Tuple.Create("\"", 10122) 682 683 #line 188 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 684 , Tuple.Create(Tuple.Create("", 10113), Tuple.Create<System.Object, System.Int32>(buttonId 685 686 #line default 687 #line hidden 688 , 10113), false) 689 ); 690 691 WriteLiteral(">\r\n"); 692 693 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t"); 694 695 696 #line 189 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 697 Write(option.Name); 698 699 700 #line default 701 #line hidden 702 WriteLiteral("\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 703 704 705 #line 191 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 706 break; 707 case VariantGroupDisplayType.VariantOptionImage: 708 709 710 #line default 711 #line hidden 712 WriteLiteral("\t\t\t\t\t\t\t\t\t\t<button"); 713 714 WriteLiteral(" type=\"button\""); 715 716 WriteAttribute("class", Tuple.Create(" class=\"", 10280), Tuple.Create("\"", 10365) 717 , Tuple.Create(Tuple.Create("", 10288), Tuple.Create("btn", 10288), true) 718 , Tuple.Create(Tuple.Create(" ", 10291), Tuple.Create("p-0", 10292), true) 719 , Tuple.Create(Tuple.Create(" ", 10295), Tuple.Create("d-inline-block", 10296), true) 720 721 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 722 , Tuple.Create(Tuple.Create(" ", 10310), Tuple.Create<System.Object, System.Int32>(optionLayout 723 724 #line default 725 #line hidden 726 , 10311), false) 727 , Tuple.Create(Tuple.Create(" ", 10324), Tuple.Create("variant-option", 10325), true) 728 , Tuple.Create(Tuple.Create(" ", 10339), Tuple.Create("js-variant-option", 10340), true) 729 730 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 731 , Tuple.Create(Tuple.Create(" ", 10357), Tuple.Create<System.Object, System.Int32>(active 732 733 #line default 734 #line hidden 735 , 10358), false) 736 ); 737 738 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 739 740 WriteLiteral(" data-variant-id=\""); 741 742 743 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 744 Write(option.Id); 745 746 747 #line default 748 #line hidden 749 WriteLiteral("\""); 750 751 WriteAttribute("id", Tuple.Create(" id=\"", 10446), Tuple.Create("\"", 10507) 752 753 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 754 , Tuple.Create(Tuple.Create("", 10451), Tuple.Create<System.Object, System.Int32>(product.Id 755 756 #line default 757 #line hidden 758 , 10451), false) 759 , Tuple.Create(Tuple.Create("", 10464), Tuple.Create("_", 10464), true) 760 761 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 762 , Tuple.Create(Tuple.Create("", 10465), Tuple.Create<System.Object, System.Int32>(option.Id 763 764 #line default 765 #line hidden 766 , 10465), false) 767 , Tuple.Create(Tuple.Create("", 10477), Tuple.Create("_", 10477), true) 768 769 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 770 , Tuple.Create(Tuple.Create("", 10478), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 771 772 #line default 773 #line hidden 774 , 10478), false) 775 ); 776 777 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t<img"); 778 779 WriteAttribute("class", Tuple.Create(" class=\"", 10526), Tuple.Create("\"", 10547) 780 781 #line 194 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 782 , Tuple.Create(Tuple.Create("", 10534), Tuple.Create<System.Object, System.Int32>(optionLayout 783 784 #line default 785 #line hidden 786 , 10534), false) 787 ); 788 789 WriteAttribute("src", Tuple.Create(" src=\"", 10548), Tuple.Create("\"", 10647) 790 , Tuple.Create(Tuple.Create("", 10554), Tuple.Create("/Admin/Public/GetImage.ashx?image=", 10554), true) 791 792 #line 194 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 793 , Tuple.Create(Tuple.Create("", 10588), Tuple.Create<System.Object, System.Int32>(option.OptionImage.Value 794 795 #line default 796 #line hidden 797 , 10588), false) 798 , Tuple.Create(Tuple.Create("", 10615), Tuple.Create("&width=42&Format=WebP&Quality=70", 10615), true) 799 ); 800 801 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 802 803 804 #line 196 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 805 break; 806 default: 807 if (!string.IsNullOrEmpty(option.Color)) 808 { 809 contrastColor = GetContrastColor(option.Color); 810 811 812 #line default 813 #line hidden 814 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button"); 815 816 WriteLiteral(" type=\"button\""); 817 818 WriteAttribute("class", Tuple.Create(" class=\"", 10866), Tuple.Create("\"", 10963) 819 , Tuple.Create(Tuple.Create("", 10874), Tuple.Create("btn", 10874), true) 820 , Tuple.Create(Tuple.Create(" ", 10877), Tuple.Create("colorbox", 10878), true) 821 822 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 823 , Tuple.Create(Tuple.Create(" ", 10886), Tuple.Create<System.Object, System.Int32>(optionLayout 824 825 #line default 826 #line hidden 827 , 10887), false) 828 , Tuple.Create(Tuple.Create(" ", 10900), Tuple.Create("d-inline-block", 10901), true) 829 , Tuple.Create(Tuple.Create(" ", 10915), Tuple.Create("variant-option", 10916), true) 830 , Tuple.Create(Tuple.Create(" ", 10930), Tuple.Create("border", 10931), true) 831 , Tuple.Create(Tuple.Create(" ", 10937), Tuple.Create("js-variant-option", 10938), true) 832 833 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 834 , Tuple.Create(Tuple.Create(" ", 10955), Tuple.Create<System.Object, System.Int32>(active 835 836 #line default 837 #line hidden 838 , 10956), false) 839 ); 840 841 WriteAttribute("style", Tuple.Create(" style=\"", 10964), Tuple.Create("\"", 11049) 842 , Tuple.Create(Tuple.Create("", 10972), Tuple.Create("background-color:", 10972), true) 843 844 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 845 , Tuple.Create(Tuple.Create(" ", 10989), Tuple.Create<System.Object, System.Int32>(option.Color 846 847 #line default 848 #line hidden 849 , 10990), false) 850 , Tuple.Create(Tuple.Create("", 11003), Tuple.Create(";", 11003), true) 851 , Tuple.Create(Tuple.Create(" ", 11004), Tuple.Create("--variantoption-check-color:", 11006), true) 852 853 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 854 , Tuple.Create(Tuple.Create(" ", 11034), Tuple.Create<System.Object, System.Int32>(contrastColor 855 856 #line default 857 #line hidden 858 , 11035), false) 859 ); 860 861 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 862 863 WriteLiteral(" data-variant-id=\""); 864 865 866 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 867 Write(option.Id); 868 869 870 #line default 871 #line hidden 872 WriteLiteral("\""); 873 874 WriteAttribute("id", Tuple.Create(" id=\"", 11130), Tuple.Create("\"", 11144) 875 876 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 877 , Tuple.Create(Tuple.Create("", 11135), Tuple.Create<System.Object, System.Int32>(buttonId 878 879 #line default 880 #line hidden 881 , 11135), false) 882 ); 883 884 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span"); 885 886 WriteLiteral(" class=\"visually-hidden\""); 887 888 WriteLiteral(">"); 889 890 891 #line 202 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 892 Write(option.Color); 893 894 895 #line default 896 #line hidden 897 WriteLiteral("</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 898 899 900 #line 204 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 901 } 902 else if (!string.IsNullOrEmpty(option.Color) && !string.IsNullOrEmpty(option.Image.Value)) 903 { 904 905 906 #line default 907 #line hidden 908 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button"); 909 910 WriteLiteral(" type=\"button\""); 911 912 WriteAttribute("class", Tuple.Create(" class=\"", 11394), Tuple.Create("\"", 11479) 913 , Tuple.Create(Tuple.Create("", 11402), Tuple.Create("btn", 11402), true) 914 , Tuple.Create(Tuple.Create(" ", 11405), Tuple.Create("p-0", 11406), true) 915 , Tuple.Create(Tuple.Create(" ", 11409), Tuple.Create("d-inline-block", 11410), true) 916 917 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 918 , Tuple.Create(Tuple.Create(" ", 11424), Tuple.Create<System.Object, System.Int32>(optionLayout 919 920 #line default 921 #line hidden 922 , 11425), false) 923 , Tuple.Create(Tuple.Create(" ", 11438), Tuple.Create("variant-option", 11439), true) 924 , Tuple.Create(Tuple.Create(" ", 11453), Tuple.Create("js-variant-option", 11454), true) 925 926 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 927 , Tuple.Create(Tuple.Create(" ", 11471), Tuple.Create<System.Object, System.Int32>(active 928 929 #line default 930 #line hidden 931 , 11472), false) 932 ); 933 934 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 935 936 WriteLiteral(" data-variant-id=\""); 937 938 939 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 940 Write(option.Id); 941 942 943 #line default 944 #line hidden 945 WriteLiteral("\""); 946 947 WriteAttribute("id", Tuple.Create(" id=\"", 11560), Tuple.Create("\"", 11574) 948 949 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 950 , Tuple.Create(Tuple.Create("", 11565), Tuple.Create<System.Object, System.Int32>(buttonId 951 952 #line default 953 #line hidden 954 , 11565), false) 955 ); 956 957 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<img"); 958 959 WriteAttribute("src", Tuple.Create(" src=\"", 11594), Tuple.Create("\"", 11687) 960 , Tuple.Create(Tuple.Create("", 11600), Tuple.Create("/Admin/Public/GetImage.ashx?image=", 11600), true) 961 962 #line 208 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 963 , Tuple.Create(Tuple.Create("", 11634), Tuple.Create<System.Object, System.Int32>(option.Image.Value 964 965 #line default 966 #line hidden 967 , 11634), false) 968 , Tuple.Create(Tuple.Create("", 11655), Tuple.Create("&width=42&Format=WebP&Quality=70", 11655), true) 969 ); 970 971 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 972 973 974 #line 210 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 975 } 976 else 977 { 978 979 980 #line default 981 #line hidden 982 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button"); 983 984 WriteLiteral(" type=\"button\""); 985 986 WriteAttribute("class", Tuple.Create(" class=\"", 11787), Tuple.Create("\"", 11868) 987 , Tuple.Create(Tuple.Create("", 11795), Tuple.Create("btn", 11795), true) 988 , Tuple.Create(Tuple.Create(" ", 11798), Tuple.Create("btn-secondary", 11799), true) 989 , Tuple.Create(Tuple.Create(" ", 11812), Tuple.Create("d-inline-block", 11813), true) 990 , Tuple.Create(Tuple.Create(" ", 11827), Tuple.Create("variant-option", 11828), true) 991 , Tuple.Create(Tuple.Create(" ", 11842), Tuple.Create("js-variant-option", 11843), true) 992 993 #line 213 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 994 , Tuple.Create(Tuple.Create(" ", 11860), Tuple.Create<System.Object, System.Int32>(active 995 996 #line default 997 #line hidden 998 , 11861), false) 999 ); 1000 1001 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 1002 1003 WriteLiteral(" data-variant-id=\""); 1004 1005 1006 #line 213 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1007 Write(option.Id); 1008 1009 1010 #line default 1011 #line hidden 1012 WriteLiteral("\""); 1013 1014 WriteAttribute("id", Tuple.Create(" id=\"", 11949), Tuple.Create("\"", 11963) 1015 1016 #line 213 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1017 , Tuple.Create(Tuple.Create("", 11954), Tuple.Create<System.Object, System.Int32>(buttonId 1018 1019 #line default 1020 #line hidden 1021 , 11954), false) 1022 ); 1023 1024 WriteLiteral(">\r\n"); 1025 1026 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t\t"); 1027 1028 1029 #line 214 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1030 Write(option.Name); 1031 1032 1033 #line default 1034 #line hidden 1035 WriteLiteral("\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n"); 1036 1037 1038 #line 216 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1039 } 1040 break; 1041 } 1042 } 1043 } 1044 else 1045 { 1046 1047 1048 #line default 1049 #line hidden 1050 WriteLiteral("\t\t\t <select"); 1051 1052 WriteLiteral(" class=\"form-select\""); 1053 1054 WriteAttribute("id", Tuple.Create(" id=\"", 12182), Tuple.Create("\"", 12219) 1055 , Tuple.Create(Tuple.Create("", 12187), Tuple.Create("VariantDropdown_", 12187), true) 1056 1057 #line 223 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1058 , Tuple.Create(Tuple.Create("", 12203), Tuple.Create<System.Object, System.Int32>(variantGroup.Id 1059 1060 #line default 1061 #line hidden 1062 , 12203), false) 1063 ); 1064 1065 WriteAttribute("aria-label", Tuple.Create(" aria-label=\"", 12220), Tuple.Create("\"", 12251) 1066 1067 #line 223 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1068 , Tuple.Create(Tuple.Create("", 12233), Tuple.Create<System.Object, System.Int32>(variantGroup.Name 1069 1070 #line default 1071 #line hidden 1072 , 12233), false) 1073 ); 1074 1075 WriteLiteral(" onchange=\"swift.VariantSelector.OptionClick(event)\""); 1076 1077 WriteLiteral(">\r\n"); 1078 1079 1080 #line 224 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1081 1082 1083 #line default 1084 #line hidden 1085 1086 #line 224 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1087 foreach (var option in variantGroup.Options) 1088 { 1089 string active = variantId != null && variantId.Contains(option.Id) ? "active" : ""; 1090 var selected = variantId != null && variantId.Contains(option.Id) ? "selected" : ""; 1091 var value = $"{product.Id}_{option.Id}"; 1092 1093 1094 1095 #line default 1096 #line hidden 1097 WriteLiteral("\t\t\t <option"); 1098 1099 WriteAttribute("value", Tuple.Create(" value=\"", 12751), Tuple.Create("\"", 12767) 1100 1101 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1102 , Tuple.Create(Tuple.Create("", 12759), Tuple.Create<System.Object, System.Int32>(value 1103 1104 #line default 1105 #line hidden 1106 , 12759), false) 1107 ); 1108 1109 WriteAttribute("class", Tuple.Create(" class=\"", 12768), Tuple.Create("\"", 12816) 1110 , Tuple.Create(Tuple.Create("", 12776), Tuple.Create("variant-option", 12776), true) 1111 , Tuple.Create(Tuple.Create(" ", 12790), Tuple.Create("js-variant-option", 12791), true) 1112 1113 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1114 , Tuple.Create(Tuple.Create(" ", 12808), Tuple.Create<System.Object, System.Int32>(active 1115 1116 #line default 1117 #line hidden 1118 , 12809), false) 1119 ); 1120 1121 WriteLiteral(" data-variant-id=\""); 1122 1123 1124 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1125 Write(option.Id); 1126 1127 1128 #line default 1129 #line hidden 1130 WriteLiteral("\""); 1131 1132 WriteAttribute("id", Tuple.Create(" id=\"", 12846), Tuple.Create("\"", 12891) 1133 1134 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1135 , Tuple.Create(Tuple.Create("", 12851), Tuple.Create<System.Object, System.Int32>(value 1136 1137 #line default 1138 #line hidden 1139 , 12851), false) 1140 , Tuple.Create(Tuple.Create("", 12859), Tuple.Create("_", 12859), true) 1141 1142 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1143 , Tuple.Create(Tuple.Create("", 12860), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 1144 1145 #line default 1146 #line hidden 1147 , 12860), false) 1148 ); 1149 1150 WriteLiteral(" "); 1151 1152 1153 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1154 Write(selected); 1155 1156 1157 #line default 1158 #line hidden 1159 WriteLiteral(">"); 1160 1161 1162 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1163 Write(option.Name); 1164 1165 1166 #line default 1167 #line hidden 1168 WriteLiteral("</option>\r\n"); 1169 1170 1171 #line 231 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1172 } 1173 1174 1175 #line default 1176 #line hidden 1177 WriteLiteral("\t\t\t </select>\r\n"); 1178 1179 1180 #line 233 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1181 } 1182 1183 1184 #line default 1185 #line hidden 1186 WriteLiteral("\t\t\t </div>\r\n\t\t\t </div>\r\n"); 1187 1188 1189 #line 236 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1190 1191 1192 groupNumber++; 1193 } 1194 1195 1196 #line default 1197 #line hidden 1198 WriteLiteral("\t\t</form>\r\n"); 1199 1200 1201 #line 241 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1202 1203 1204 1205 #line default 1206 #line hidden 1207 WriteLiteral(" <script"); 1208 1209 WriteLiteral(" type=\"module\""); 1210 1211 WriteLiteral(">\r\n swift.VariantSelector.init();\r\n </script>\r\n"); 1212 1213 1214 #line 245 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1215 } 1216 else if (Pageview.IsVisualEditorMode) 1217 { 1218 string horizontalAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } }); 1219 string horizontalTextAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } }); 1220 1221 1222 1223 #line default 1224 #line hidden 1225 WriteLiteral(" <form"); 1226 1227 WriteAttribute("class", Tuple.Create(" class=\"", 13634), Tuple.Create("\"", 13718) 1228 , Tuple.Create(Tuple.Create("", 13642), Tuple.Create("d-flex", 13642), true) 1229 , Tuple.Create(Tuple.Create(" ", 13648), Tuple.Create("flex-column", 13649), true) 1230 , Tuple.Create(Tuple.Create(" ", 13660), Tuple.Create("js-variant-selector", 13661), true) 1231 , Tuple.Create(Tuple.Create(" ", 13680), Tuple.Create("item_", 13681), true) 1232 1233 #line 251 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1234 , Tuple.Create(Tuple.Create("", 13686), Tuple.Create<System.Object, System.Int32>(Model.Item.SystemName.ToLower() 1235 1236 #line default 1237 #line hidden 1238 , 13686), false) 1239 ); 1240 1241 WriteLiteral(" data-combinations=\"VO1,VO2,VO3,VO4\""); 1242 1243 WriteLiteral(">\r\n <div>\r\n"); 1244 1245 1246 #line 253 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1247 1248 1249 #line default 1250 #line hidden 1251 1252 #line 253 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1253 if (!hideGroupHeaders) 1254 { 1255 1256 1257 #line default 1258 #line hidden 1259 WriteLiteral(" <h3"); 1260 1261 WriteAttribute("class", Tuple.Create(" class=\"", 13860), Tuple.Create("\"", 13891) 1262 , Tuple.Create(Tuple.Create("", 13868), Tuple.Create("h6", 13868), true) 1263 1264 #line 255 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1265 , Tuple.Create(Tuple.Create(" ", 13870), Tuple.Create<System.Object, System.Int32>(horizontalTextAlign 1266 1267 #line default 1268 #line hidden 1269 , 13871), false) 1270 ); 1271 1272 WriteLiteral(">"); 1273 1274 1275 #line 255 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1276 Write(Translate("Sizes")); 1277 1278 1279 #line default 1280 #line hidden 1281 WriteLiteral("</h3>\r\n"); 1282 1283 1284 #line 256 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1285 } 1286 1287 1288 #line default 1289 #line hidden 1290 WriteLiteral(" <div"); 1291 1292 WriteAttribute("class", Tuple.Create(" class=\"", 13958), Tuple.Create("\"", 14004) 1293 , Tuple.Create(Tuple.Create("", 13966), Tuple.Create("mb-3", 13966), true) 1294 1295 #line 257 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1296 , Tuple.Create(Tuple.Create(" ", 13970), Tuple.Create<System.Object, System.Int32>(horizontalAlign 1297 1298 #line default 1299 #line hidden 1300 , 13971), false) 1301 , Tuple.Create(Tuple.Create(" ", 13987), Tuple.Create("js-variant-group", 13988), true) 1302 ); 1303 1304 WriteLiteral(" data-group-id=\"0\""); 1305 1306 WriteLiteral(">\r\n <button"); 1307 1308 WriteLiteral(" type=\"button\""); 1309 1310 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\""); 1311 1312 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 1313 1314 WriteLiteral(" data-variant-id=\"VO1\""); 1315 1316 WriteAttribute("id", Tuple.Create(" id=\"", 14219), Tuple.Create("\"", 14271) 1317 1318 #line 258 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1319 , Tuple.Create(Tuple.Create("", 14224), Tuple.Create<System.Object, System.Int32>(product.Id 1320 1321 #line default 1322 #line hidden 1323 , 14224), false) 1324 , Tuple.Create(Tuple.Create("", 14237), Tuple.Create("_VO1_", 14237), true) 1325 1326 #line 258 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1327 , Tuple.Create(Tuple.Create("", 14242), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 1328 1329 #line default 1330 #line hidden 1331 , 14242), false) 1332 ); 1333 1334 WriteLiteral(">S</button>\r\n <button"); 1335 1336 WriteLiteral(" type=\"button\""); 1337 1338 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\""); 1339 1340 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 1341 1342 WriteLiteral(" data-variant-id=\"VO2\""); 1343 1344 WriteAttribute("id", Tuple.Create(" id=\"", 14478), Tuple.Create("\"", 14530) 1345 1346 #line 259 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1347 , Tuple.Create(Tuple.Create("", 14483), Tuple.Create<System.Object, System.Int32>(product.Id 1348 1349 #line default 1350 #line hidden 1351 , 14483), false) 1352 , Tuple.Create(Tuple.Create("", 14496), Tuple.Create("_VO2_", 14496), true) 1353 1354 #line 259 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1355 , Tuple.Create(Tuple.Create("", 14501), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 1356 1357 #line default 1358 #line hidden 1359 , 14501), false) 1360 ); 1361 1362 WriteLiteral(">M</button>\r\n <button"); 1363 1364 WriteLiteral(" type=\"button\""); 1365 1366 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\""); 1367 1368 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 1369 1370 WriteLiteral(" data-variant-id=\"VO3\""); 1371 1372 WriteAttribute("id", Tuple.Create(" id=\"", 14737), Tuple.Create("\"", 14789) 1373 1374 #line 260 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1375 , Tuple.Create(Tuple.Create("", 14742), Tuple.Create<System.Object, System.Int32>(product.Id 1376 1377 #line default 1378 #line hidden 1379 , 14742), false) 1380 , Tuple.Create(Tuple.Create("", 14755), Tuple.Create("_VO3_", 14755), true) 1381 1382 #line 260 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1383 , Tuple.Create(Tuple.Create("", 14760), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 1384 1385 #line default 1386 #line hidden 1387 , 14760), false) 1388 ); 1389 1390 WriteLiteral(">L</button>\r\n <button"); 1391 1392 WriteLiteral(" type=\"button\""); 1393 1394 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\""); 1395 1396 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\""); 1397 1398 WriteLiteral(" data-variant-id=\"VO4\""); 1399 1400 WriteAttribute("id", Tuple.Create(" id=\"", 14996), Tuple.Create("\"", 15048) 1401 1402 #line 261 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1403 , Tuple.Create(Tuple.Create("", 15001), Tuple.Create<System.Object, System.Int32>(product.Id 1404 1405 #line default 1406 #line hidden 1407 , 15001), false) 1408 , Tuple.Create(Tuple.Create("", 15014), Tuple.Create("_VO4_", 15014), true) 1409 1410 #line 261 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1411 , Tuple.Create(Tuple.Create("", 15019), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID 1412 1413 #line default 1414 #line hidden 1415 , 15019), false) 1416 ); 1417 1418 WriteLiteral(">XL</button>\r\n </div>\r\n </div>\r\n </form>\r\n"); 1419 1420 1421 #line 265 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1422 1423 1424 1425 #line default 1426 #line hidden 1427 WriteLiteral("\t <script"); 1428 1429 WriteLiteral(" type=\"module\""); 1430 1431 WriteLiteral(">\r\n swift.VariantSelector.init();\r\n </script>\r\n"); 1432 1433 1434 #line 269 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1435 } 1436 } 1437 else if (Pageview.IsVisualEditorMode) 1438 { 1439 1440 1441 #line default 1442 #line hidden 1443 WriteLiteral(" <div"); 1444 1445 WriteLiteral(" class=\"alert alert-dark m-0\""); 1446 1447 WriteLiteral(" role=\"alert\""); 1448 1449 WriteLiteral(">\r\n <span>"); 1450 1451 1452 #line 274 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1453 Write(Translate("No products available")); 1454 1455 1456 #line default 1457 #line hidden 1458 WriteLiteral("</span>\r\n </div>\r\n"); 1459 1460 1461 #line 276 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml" 1462 } 1463 1464 1465 #line default 1466 #line hidden 1467 } 1468 } 1469 } 1470
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Collections.Generic 3 @using System.Linq 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Variants 6 7 @functions { 8 //Find contrast color (white, black) 9 public static string GetContrastColor(string hexString) 10 { 11 System.Drawing.Color bg = System.Drawing.ColorTranslator.FromHtml(hexString); 12 13 int nThreshold = 105; 14 int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) + 15 (bg.B * 0.114)); 16 17 string foreColor = (255 - bgDelta < nThreshold) ? "#333" : "#fff"; 18 return foreColor; 19 } 20 21 public string GetLayoutForVariantGroup(string variantGroupId) 22 { 23 string showVariantGroups = !string.IsNullOrEmpty(Model.Item.GetString("ShowVariantGroupOptions")) ? Model.Item.GetString("ShowVariantGroupOptions") : "all"; 24 string defaultVariantGroupLayout = Model.Item.GetRawValueString("DefaultVariantGroupLayout", "button"); 25 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>(); 26 27 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return defaultVariantGroupLayout; 28 29 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList) 30 { 31 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(','); 32 if (variantGroups.Any(s => s.Equals(variantGroupId))) return selectedVariantGroupListItem.GetRawValueString("VariantGroupLayout"); 33 } 34 35 return defaultVariantGroupLayout; 36 } 37 38 //Collect all variant images 39 public static Dictionary<string, string> GetVariantImages(List<VariantInfoViewModel> variantInfo, Dictionary<string, string> list) 40 { 41 foreach (var variantGroup in variantInfo) 42 { 43 if (variantGroup.Image?.Value != null && !list.ContainsKey(variantGroup.OptionID)) { 44 list.Add(variantGroup.OptionID, variantGroup.Image.Value); 45 } 46 47 if (variantGroup.VariantInfo != null) { 48 GetVariantImages(variantGroup.VariantInfo, list); 49 } 50 } 51 52 return list; 53 } 54 55 private string GetDefaultOrVariantGroupValue(string variantGroupId, string itemField, string itemFieldDefaultValue, Dictionary<string, string> fieldValueMapping) 56 { 57 string horizontalTextAlign = Model.Item.GetRawValueString(itemField, itemFieldDefaultValue); 58 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign; 59 60 // If no variantGroup (i.e. Visual Editor), return default value 61 if (string.IsNullOrEmpty(variantGroupId)) return horizontalTextAlign; 62 63 string showVariantGroups = Model.Item.GetString("ShowVariantGroupOptions", "all"); 64 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>(); 65 // If no exceptions or settings are all the same, return default value 66 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return horizontalTextAlign; 67 68 // Get specific value for variant group 69 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList) 70 { 71 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(','); 72 if (!variantGroups.Any(s => s.Equals(variantGroupId))) continue; 73 74 horizontalTextAlign = selectedVariantGroupListItem.GetRawValueString(itemField, itemFieldDefaultValue); 75 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign; 76 } 77 78 return horizontalTextAlign; 79 } 80 } 81 82 @{ 83 ProductViewModel product = new ProductViewModel(); 84 85 ProductViewModelSettings productSetting = new ProductViewModelSettings 86 { 87 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 88 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 89 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 90 ShopId = Pageview.Area.EcomShopId 91 }; 92 93 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 94 { 95 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 96 } 97 else if (Pageview.Item["DummyProduct"] != null) 98 { 99 100 string dummyProductId = ""; 101 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 102 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 103 if (productList.Products != null) 104 { 105 foreach (var p in productList.Products) { dummyProductId = p.Id; } 106 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel(); 107 product = dummyProduct; 108 } 109 else 110 { 111 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id); 112 } 113 } 114 else if (Pageview.Item["DummyProduct"] == null) 115 { 116 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id); 117 } 118 119 bool hideGroupHeaders = Model.Item.GetBoolean("HideGroupHeaders"); 120 } 121 122 @if (product.Id != null) 123 { 124 var productVariantGroups = product.VariantGroups(); 125 126 if (productVariantGroups.Any()) 127 { 128 string[] variantId = product.VariantId.Split('.'); 129 int groupNumber = 1; 130 131 string baseUrl = $"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}"; 132 string variantUrl = ""; 133 if (!string.IsNullOrEmpty(product.VariantId)) 134 { 135 variantUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}&VariantID={product.VariantId}"); 136 } 137 138 Dictionary<string, string> variantImages = new Dictionary<string, string>(); 139 variantImages = GetVariantImages(product.VariantInfo.VariantInfo, variantImages); 140 141 <form class="d-flex flex-column gap-2 js-variant-selector item_@Model.Item.SystemName.ToLower()" data-combinations="@string.Join(",", product.VariantCombinations())" data-base-url="@baseUrl" data-friendly-url="@variantUrl" > 142 @foreach (var variantGroup in productVariantGroups) 143 { 144 VariantGroupViewModel group = variantGroup; 145 string variantGroupLayout = GetLayoutForVariantGroup(variantGroup.Id); 146 string horizontalAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } }); 147 string horizontalTextAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } }); 148 149 <div> 150 @if (!hideGroupHeaders) 151 { 152 <h3 class="h6 @horizontalTextAlign">@group.Name</h3> 153 } 154 <div class="d-flex gap-2 @horizontalAlign flex-wrap js-variant-group" data-group-id="@groupNumber"> 155 @if (variantGroupLayout == "button") 156 { 157 foreach (var option in group.Options) 158 { 159 string active = variantId != null && variantId.Contains(option.Id) ? "active" : ""; 160 string buttonId = $"{product.Id}_{option.Id}_{Pageview.CurrentParagraph.ID}"; 161 string contrastColor = string.Empty; 162 string optionLayout = optionLayout = GetDefaultOrVariantGroupValue(variantGroup.Id, "ButtonLayout", "rounded-circle", new Dictionary<string, string> { { "round", "rounded-circle" }, { "square", "" } }); 163 var displayType = group.DisplayType; 164 165 switch (displayType) 166 { 167 case VariantGroupDisplayType.VariantColor: 168 contrastColor = GetContrastColor(option.Color); 169 <button type="button" class="btn colorbox @optionLayout d-inline-block variant-option border js-variant-option @active" style="background-color: @option.Color; --variantoption-check-color: @contrastColor" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId"> 170 <span class="visually-hidden">@option.Color</span> 171 </button> 172 break; 173 case VariantGroupDisplayType.VariantImage: 174 string variantImage = string.Empty; 175 if (variantImages.TryGetValue(option.Id, out variantImage)) 176 { 177 <button type="button" class="btn p-0 d-inline-block @optionLayout variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@(product.Id)_@(option.Id)_@Pageview.CurrentParagraph.ID"> 178 <img class="@optionLayout" src="/Admin/Public/GetImage.ashx?image=@(variantImage)&width=42&Format=WebP&Quality=70"> 179 </button> 180 } else { 181 <button type="button" class="btn btn-secondary d-inline-block variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@(product.Id)_@(option.Id)_@Pageview.CurrentParagraph.ID"> 182 @option.Name 183 </button> 184 } 185 186 break; 187 case VariantGroupDisplayType.VariantName: 188 <button type="button" class="btn btn-secondary d-inline-block variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId"> 189 @option.Name 190 </button> 191 break; 192 case VariantGroupDisplayType.VariantOptionImage: 193 <button type="button" class="btn p-0 d-inline-block @optionLayout variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@(product.Id)_@(option.Id)_@Pageview.CurrentParagraph.ID"> 194 <img class="@optionLayout" src="/Admin/Public/GetImage.ashx?image=@(option.OptionImage.Value)&width=42&Format=WebP&Quality=70"> 195 </button> 196 break; 197 default: 198 if (!string.IsNullOrEmpty(option.Color)) 199 { 200 contrastColor = GetContrastColor(option.Color); 201 <button type="button" class="btn colorbox @optionLayout d-inline-block variant-option border js-variant-option @active" style="background-color: @option.Color; --variantoption-check-color: @contrastColor" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId"> 202 <span class="visually-hidden">@option.Color</span> 203 </button> 204 } 205 else if (!string.IsNullOrEmpty(option.Color) && !string.IsNullOrEmpty(option.Image.Value)) 206 { 207 <button type="button" class="btn p-0 d-inline-block @optionLayout variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId"> 208 <img src="/Admin/Public/GetImage.ashx?image=@(option.Image.Value)&width=42&Format=WebP&Quality=70"> 209 </button> 210 } 211 else 212 { 213 <button type="button" class="btn btn-secondary d-inline-block variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId"> 214 @option.Name 215 </button> 216 } 217 break; 218 } 219 } 220 } 221 else 222 { 223 <select class="form-select" id="VariantDropdown_@variantGroup.Id" aria-label="@variantGroup.Name" onchange="swift.VariantSelector.OptionClick(event)"> 224 @foreach (var option in variantGroup.Options) 225 { 226 string active = variantId != null && variantId.Contains(option.Id) ? "active" : ""; 227 var selected = variantId != null && variantId.Contains(option.Id) ? "selected" : ""; 228 var value = $"{product.Id}_{option.Id}"; 229 230 <option value="@(value)" class="variant-option js-variant-option @active" data-variant-id="@option.Id" id="@(value)_@(Pageview.CurrentParagraph.ID)" @selected>@option.Name</option> 231 } 232 </select> 233 } 234 </div> 235 </div> 236 237 238 groupNumber++; 239 } 240 </form> 241 242 <script type="module"> 243 swift.VariantSelector.init(); 244 </script> 245 } 246 else if (Pageview.IsVisualEditorMode) 247 { 248 string horizontalAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } }); 249 string horizontalTextAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } }); 250 251 <form class="d-flex flex-column js-variant-selector item_@Model.Item.SystemName.ToLower()" data-combinations="VO1,VO2,VO3,VO4"> 252 <div> 253 @if (!hideGroupHeaders) 254 { 255 <h3 class="h6 @horizontalTextAlign">@Translate("Sizes")</h3> 256 } 257 <div class="mb-3 @horizontalAlign js-variant-group" data-group-id="0"> 258 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO1" id="@(product.Id)_VO1_@Pageview.CurrentParagraph.ID">S</button> 259 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO2" id="@(product.Id)_VO2_@Pageview.CurrentParagraph.ID">M</button> 260 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO3" id="@(product.Id)_VO3_@Pageview.CurrentParagraph.ID">L</button> 261 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO4" id="@(product.Id)_VO4_@Pageview.CurrentParagraph.ID">XL</button> 262 </div> 263 </div> 264 </form> 265 266 <script type="module"> 267 swift.VariantSelector.init(); 268 </script> 269 } 270 } 271 else if (Pageview.IsVisualEditorMode) 272 { 273 <div class="alert alert-dark m-0" role="alert"> 274 <span>@Translate("No products available")</span> 275 </div> 276 } 277
- All of our wheels are hand-finished by our professional wheel builders.
- Training or racing with performance you can count on
- SUP-welded hard-anodized rims with double-eyelets for added strength
- UB-machined braking surface for durability and sure stopping power
- 8-9-10 speed Shimano Compatible
- Brand name
- Shimano
- Volume
- 0
- Weight
- 0
- Width
- 0
- Height
- 0
Specification fields
- Brand name
- Shimano
- Volume
- 0
- Weight
- 0
- Width
- 0
- Height
- 0
- MyVolume
- 0 pt
- Is Backed By Integration
- No