Classic Single
Oplev komfort med Classic Single Airbed. Den er 70 cm bred, har en blød velouroverflade og er nem at betjene. Perfekt til enhver oplevelse!
Vejl. Pris
139,95
119,95 kr.
På lager
- Gratis levering over 5.000 DKK - billig fragt 39 DKK
- Brug for hjælp? - find vores guide her
- Find forhandler - findes i disse butikker
- Denne populære madras er fremstillet af slidstærk PVC med en overside i blød velour. Dobbeltventilen gør madrassen nem at pumpe op og tømme. Den er en fantastisk seng med en komfort og stabilitet, der sikrer en fredfyldt nat.
- Stof
- Bund: PVC. Top: rayon
- Størrelse
- 185 x 70 x 20 cm (LxBxH)
- Max. belastning
- 150 kg
- Farve
- Black & Grey
- Størrelse (pakket)
- 28 x 32 x 4 cm
- Vægt
- 1.4 kg
- EAN
- 5709388128409
- Number
- 400045
- Dobbeltventil
- Brugervenlig ventil
- Blød velouroverflade for øget komfort
Error executing template "Designs/Swift/Paragraph/Custom_Swift_ProductComponentSlider.cshtml" Microsoft.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=2; handshake=2; [Login] initialization=0; authentication=0; [Post-Login] complete=14018; ---> System.ComponentModel.Win32Exception (258): The wait operation timed out. at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator.InitializeReader(Enumerator enumerator) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at Oase.Backend.Services.DinoService.GetOtherLookedAt(String Itemnumber, String Site, Int32 limit) at CompiledRazorTemplates.Dynamic.RazorEngine_8cc3604668bc4784bd05ecd9108aca32.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate() ClientConnectionId:a34c66f5-759e-483a-8d8b-08d314c1f8cb Error Number:-2,State:0,Class:11
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Core 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 5 @{ 6 ProductViewModel product = null; 7 IList<ProductViewModel> products = new List<ProductViewModel> { }; 8 IList<ProductGroupViewModel> groups = new List<ProductGroupViewModel> { }; 9 10 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 11 { 12 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 13 } 14 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 15 { 16 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 17 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 18 19 if (productList?.Products is object) 20 { 21 product = productList.Products[0]; 22 } 23 } 24 25 string ProductSliderService = GetPageIdByNavigationTag("ProductSliderService") != 0 ? GetPageIdByNavigationTag("ProductSliderService").ToString() : ""; 26 string GroupSliderService = GetPageIdByNavigationTag("GroupSliderService") != 0 ? GetPageIdByNavigationTag("GroupSliderService").ToString() : ""; 27 28 string layout = Model.Item.GetRawValueString("Layout") == "slider" ? "ProductSliderComponent" : "ProductGridComponent"; 29 string lazyHeight = Model.Item.GetBoolean("SetMinHeightForLazyLoading") ? "min-height: 360px" : ""; 30 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 31 32 //Source type 33 string sourceType = Model.Item.GetRawValueString("RelationType", "selected"); 34 int itemSourcePageId = Convert.ToInt32(Model.Item.GetRawValueString("ListComponentSource", "0")); 35 36 var pageService = new Dynamicweb.Content.PageService(); 37 itemSourcePageId = itemSourcePageId > 0 && pageService.GetPageOrLanguage(itemSourcePageId, Pageview.AreaID) != null ? pageService.GetPageOrLanguage(itemSourcePageId, Pageview.AreaID).ID : itemSourcePageId; 38 39 var itemListArray = Model.Item.GetList("ProductGroupList")?.SelectedValues.ToArray(); 40 41 //--- PRODUCTS --- 42 if (sourceType == "selected") 43 { 44 ProductListViewModel SelectedProducts = Model.Item.GetValue<ProductListViewModel>("SelectedProducts"); 45 if (SelectedProducts != null) 46 { 47 foreach (var SelectedProduct in SelectedProducts.Products) 48 { 49 products.Add(SelectedProduct); 50 } 51 } 52 } 53 54 //--- GROUPS --- 55 if (sourceType == "selected-groups") 56 { 57 IList<ProductGroupViewModel> SelectedGroups = Model.Item.GetValue<IList<ProductGroupViewModel>>("SelectedGroups"); 58 if (SelectedGroups != null) 59 { 60 foreach (var group in SelectedGroups) 61 { 62 groups.Add(group); 63 } 64 } 65 } 66 67 //--- PRODUCTS IN A GROUP --- 68 if (sourceType == "group-products") 69 { 70 var productService = new Dynamicweb.Ecommerce.Products.ProductService(); 71 if (itemListArray != null && itemListArray.Any()) 72 { 73 var productsInGroup = productService.GetProductsByGroupId(itemListArray.First(), true, Pageview.Area.EcomLanguageId, false); 74 itemListArray = productsInGroup.Where(a => a.DefaultPrice > 0).Select(a => a.Number).ToArray(); 75 } 76 } 77 78 //Create group id collection and products id collection strings 79 string productIds = products.Count > 0 ? string.Join(",", products.Select(a => a.Id)) : ""; 80 string groupIds = groups.Count > 0 ? string.Join(",", groups.Select(a => a.Id)) : ""; 81 82 var ParagraphTitle = Model.Item.GetString("Title"); 83 var ProductsCount = Model.Item.GetDecimal("ProductsCount"); 84 var ProductsCountMobile = Model.Item.GetDecimal("ProductsCountMobile"); 85 var ItemLimit = Model.Item.GetInt32("ItemLimit"); 86 ItemLimit = ItemLimit == 0 ? 10 : ItemLimit; 87 var TitlePosition = Model.Item.GetString("TitlePosition", "center"); 88 var TitleArrow = Model.Item.GetString("ShowTitleArrow"); 89 } 90 @if (Pageview.IsVisualEditorMode == true) 91 { 92 <div class="alert alert-dark" role="alert"> 93 <span>Content slider for: @ParagraphTitle</span> 94 </div> 95 96 } else if (sourceType == "content") 97 { 98 var ContentPage = Model.Item.GetLink("ContentPage"); 99 var paragraphService = new Dynamicweb.Content.ParagraphService(); 100 101 var itemParagraphs = paragraphService.GetParagraphsByPageId(ContentPage.PageId, Dynamicweb.Content.ParagraphSort.Sort); 102 @if (itemParagraphs.Any()) 103 { 104 <div class="grid p-0"> 105 <div class="g-col-12 p-0 position-relative"> 106 <div id="slider_@Model.ID" class="swiper overflow-hidden"> 107 <div class="swiper-wrapper row g-0 flex-nowrap"> 108 @foreach (var postComment in itemParagraphs) 109 { 110 <div class="swiper-slide col-12"> 111 @RenderParagraphContent(postComment.ID) 112 </div> 113 } 114 </div> 115 <div class="swiper-pagination slider_@(Model.Item.ParagraphID)-pagination" style="--swiper-pagination-color: #ffffff;"></div> 116 <div class="slider_@(Model.ID)-prev swiper-button-prev d-none d-lg-flex"></div> 117 <div class="slider_@(Model.ID)-next swiper-button-next d-none d-lg-flex"></div> 118 </div> 119 <div class="autoplay-progress position-absolute end-0 bottom-0"></div> 120 </div> 121 </div> 122 <style> 123 .autoplay-progress { 124 width: 20px; 125 height: 20px; 126 margin: 5px; 127 border-radius: 50%; 128 background: conic-gradient(white var(--progress), transparent 0); 129 z-index: 1; } 130 </style> 131 } 132 <link rel="stylesheet" href="/Files/Templates/Designs/Swift/Assets/css/swiper-bundle.min.css" /> 133 <script src="/Files/Templates/Designs/Swift/Assets/js/swiper-bundle.min.js"></script> 134 <script> 135 document.querySelectorAll('.swiper').forEach(slider => { 136 if (slider.classList.contains("swiper-initialized")) { 137 return; 138 } 139 return new Swiper(`#${slider.id}`, { 140 // Optional parameters 141 direction: 'horizontal', 142 loop: false, 143 spaceBetween: 0, 144 slidesPerView: 1, 145 centeredSlides: false, 146 autoplay: { 147 delay: 5000, 148 pauseOnMouseEnter: true, 149 }, 150 // Navigation arrows 151 navigation: { 152 nextEl: `.${slider.id}-next`, 153 prevEl: `.${slider.id}-prev`, 154 }, 155 // And if we need scrollbar 156 pagination: { 157 el: `.${slider.id}-pagination`, 158 }, 159 on: { 160 autoplayTimeLeft(swiper, time, progress) { 161 document.querySelector(".autoplay-progress") 162 .style.setProperty("--progress", `${progress * 360}deg`); 163 } 164 } 165 }); 166 }); 167 </script> 168 } 169 else 170 { 171 var showLocalSource = "local"; 172 173 // Url to slider service page 174 string url = "/Default.aspx?ID=" + ProductSliderService; 175 176 // Product optional extra 177 if (sourceType == "optional-extra") 178 { 179 var MainProductId = Dynamicweb.Context.Current.Request.QueryString.Get("MainProductId"); 180 string? ProductOptionalExtra; 181 if (!string.IsNullOrWhiteSpace(MainProductId)) 182 { 183 ProductOptionalExtra = MainProductId; 184 } else 185 { 186 ProductOptionalExtra = product?.ProductFields.GetValueOrDefault("OptionalExtra")?.Value.ToString(); 187 188 } 189 itemListArray = ($"{ProductOptionalExtra}").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray(); 190 } 191 192 // Also bought from "Dino" 193 if (sourceType == "AlsoBoughtDino") 194 { 195 if(product != null) 196 { 197 itemListArray = new Oase.Backend.Services.DinoService().GetOtherLookedAt(product.Number, Pageview.Area.Name, ItemLimit); 198 } 199 } 200 201 // Bestsellers from "Dino" 202 if (sourceType == "BestsellersDino") 203 { 204 itemListArray = new Oase.Backend.Services.DinoService().GetBestsellers(Pageview.Area.Name, ItemLimit); 205 } 206 207 // Cookie - Favorites and recent products 208 if (sourceType == "favorites" || sourceType == "recently-viewed") 209 { 210 itemListArray = [""]; 211 showLocalSource = sourceType; 212 } 213 214 @if (itemListArray?.Length > 0) 215 { 216 <form method="post" action="@url" id="ContentSliderForm_@Model.ID" data-localsource="@showLocalSource" 217 data-response-target-element="ContentSlider_@Model.ID" 218 data-preloader="inline" data-update-url="false" 219 class="item_@Model.Item.SystemName.ToLower()"> 220 221 <input type="hidden" name="ParagraphId" value="@Model.ID" /> 222 <input type="hidden" name="SortOrder" value="ASC"> 223 <input type="hidden" name="SourceType" value="@sourceType"> 224 <input type="hidden" name="TitlePosition" value="@TitlePosition"> 225 <input type="hidden" name="TitleArrow" value="@TitleArrow"> 226 <input type="hidden" name="itemSourcePageId" value="@itemSourcePageId"> 227 <input type="hidden" name="ParagraphTitle" value="@ParagraphTitle"> 228 <input type="hidden" name="ListOfIds" value="@string.Join(",", itemListArray)"> 229 <input type="hidden" name="MainProductId" value="@string.Join(",", itemListArray)"> 230 @if (ProductsCount != 0) 231 { 232 <input type="hidden" name="ProductsCount" value="@ProductsCount.ToString().Replace(",", ".")"> 233 } 234 @if (ProductsCountMobile != 0) 235 { 236 <input type="hidden" name="ProductsCountMobile" value="@ProductsCountMobile.ToString().Replace(",", ".")"> 237 } 238 </form> 239 240 <div class="w-100 h-100@(theme)"> 241 <div id="@Model.ID" class="user-select-none" style="scroll-margin-top:var(--header-height,150px)"></div> 242 <div id="ContentSlider_@(Model.ID)" class="h-100" style="@lazyHeight"> 243 <p class="grid placeholder-glow" style="height:400px;"> 244 <span class="placeholder g-col-3 rounded"></span> 245 <span class="placeholder g-col-3 rounded"></span> 246 <span class="placeholder g-col-3 rounded"></span> 247 <span class="placeholder g-col-3 rounded"></span> 248 </p> 249 </div> 250 </div> 251 252 <link rel="stylesheet" href="/Files/Templates/Designs/Swift/Assets/css/swiper-bundle.min.css" /> 253 <script src="/Files/Templates/Designs/Swift/Assets/js/swiper-bundle.min.js"></script> 254 <script type="module"> 255 const productSliderContainer = document.querySelector("#ContentSlider_@Model.ID"); 256 const productSliderForm = document.querySelector("#ContentSliderForm_@Model.ID"); 257 258 if (productSliderForm.dataset.localsource == 'favorites') { 259 let localItems = JSON.parse(localStorage.getItem('favorites-' + @(Pageview.Area.EcomShopId.Replace("SHOP",""))) || '[]'); 260 productSliderForm.querySelector('[name="ListOfIds"]').value = localItems.toString(); 261 productSliderForm.querySelector('[name="MainProductId"]').value = localItems.toString(); 262 } 263 if (productSliderForm.dataset.localsource == 'recently-viewed') { 264 let localItems = JSON.parse(localStorage.getItem('recently-viewed') || '[]'); 265 productSliderForm.querySelector('[name="ListOfIds"]').value = localItems.toString(); 266 productSliderForm.querySelector('[name="MainProductId"]').value = localItems.toString(); 267 } 268 269 swift.PageUpdater.Update(productSliderForm); 270 productSliderForm.addEventListener("updated.swift.pageupdater", function (e) { 271 if (e.detail.html === "") { 272 productSliderContainer.classList.add("d-none"); 273 } 274 }); 275 </script> 276 } 277 }