NEW

Juniper Mosquito Net Single

Mosquito net keeping insects away for one person – easy to use with small pack size.

Feature Highlights

  • Keeps mosquitoes and other insects away
  • Tuck-in sides offer extra protection at the base
  • Easy to use
  Out of stock
RRP 20.00
£17.00
  • Icon for payment method
  • Icon for payment method
  • Icon for payment method

The Juniper Mosquito Net Single is easy to set up and effectively keeps mosquitoes and other insects at bay, ensuring a peaceful night's sleep.

Material
Polyester mesh
Size
200 x 100 x 150 cm
Colour
Black
Textile Fiber Composition
100% polyester
Pack size
15 x 10 cm
Weight
196 g
EAN
5709388156846
Number
680327

  • Keeps mosquitoes and other insects away
  • Tuck-in sides offer extra protection at the base
  • Easy to use
  • Small pack size
  • Carry bag included
  • Pegging points in all corners and adjustable height
Error executing template "Designs/Swift/Paragraph/Custom_Swift_ProductComponentSlider.cshtml"
Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
 ---> System.ComponentModel.Win32Exception (2): The system cannot find the file specified.
   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_7325d8da64104bf58ac70d377f711039.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:00000000-0000-0000-0000-000000000000
Error Number:2,State:0,Class:20

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 ParagraphTitleNav = Model.Item.GetBoolean("TitleNav") ? "true" : "false"; 84 var ProductsCount = Model.Item.GetDecimal("ProductsCount"); 85 var ProductsCountMobile = Model.Item.GetDecimal("ProductsCountMobile"); 86 var ItemLimit = Model.Item.GetInt32("ItemLimit"); 87 ItemLimit = ItemLimit == 0 ? 10 : ItemLimit; 88 var TitlePosition = Model.Item.GetString("TitlePosition", "center"); 89 var TitleArrow = Model.Item.GetString("ShowTitleArrow"); 90 } 91 @if (Pageview.IsVisualEditorMode == true) 92 { 93 <div class="alert alert-dark" role="alert"> 94 <span>Content slider for: @ParagraphTitle</span> 95 </div> 96 97 } else if (sourceType == "content") 98 { 99 var ContentPage = Model.Item.GetLink("ContentPage"); 100 var paragraphService = new Dynamicweb.Content.ParagraphService(); 101 102 var itemParagraphs = paragraphService.GetParagraphsByPageId(ContentPage.PageId, Dynamicweb.Content.ParagraphSort.Sort); 103 @if (itemParagraphs.Any()) 104 { 105 <div class="grid p-0"> 106 <div class="g-col-12 p-0 position-relative"> 107 <div id="[email protected]" class="swiper overflow-hidden"> 108 <div class="swiper-wrapper row g-0 flex-nowrap"> 109 @foreach (var postComment in itemParagraphs) 110 { 111 <div class="swiper-slide col-12"> 112 @RenderParagraphContent(postComment.ID) 113 </div> 114 } 115 </div> 116 <div class="swiper-pagination slider_@(Model.Item.ParagraphID)-pagination" style="--swiper-pagination-color: #ffffff;"></div> 117 <div class="slider_@(Model.ID)-prev swiper-button-prev d-none d-lg-flex"></div> 118 <div class="slider_@(Model.ID)-next swiper-button-next d-none d-lg-flex"></div> 119 </div> 120 <div class="autoplay-progress position-absolute end-0 bottom-0"></div> 121 </div> 122 </div> 123 <style> 124 .autoplay-progress { 125 width: 20px; 126 height: 20px; 127 margin: 5px; 128 border-radius: 50%; 129 background: conic-gradient(white var(--progress), transparent 0); 130 z-index: 1; } 131 </style> 132 } 133 <link rel="stylesheet" href="/Files/Templates/Designs/Swift/Assets/css/swiper-bundle.min.css" /> 134 <script src="/Files/Templates/Designs/Swift/Assets/js/swiper-bundle.min.js"></script> 135 <script> 136 document.querySelectorAll('.swiper').forEach(slider => { 137 if (slider.classList.contains("swiper-initialized")) { 138 return; 139 } 140 return new Swiper(`#${slider.id}`, { 141 // Optional parameters 142 direction: 'horizontal', 143 loop: false, 144 spaceBetween: 0, 145 slidesPerView: 1, 146 centeredSlides: false, 147 autoplay: { 148 delay: 5000, 149 pauseOnMouseEnter: true, 150 }, 151 // Navigation arrows 152 navigation: { 153 nextEl: `.${slider.id}-next`, 154 prevEl: `.${slider.id}-prev`, 155 }, 156 // And if we need scrollbar 157 pagination: { 158 el: `.${slider.id}-pagination`, 159 }, 160 on: { 161 autoplayTimeLeft(swiper, time, progress) { 162 document.querySelector(".autoplay-progress") 163 .style.setProperty("--progress", `${progress * 360}deg`); 164 } 165 } 166 }); 167 }); 168 </script> 169 } 170 else 171 { 172 var showLocalSource = "local"; 173 174 // Url to slider service page 175 string url = "/Default.aspx?ID=" + ProductSliderService; 176 177 // Product optional extra 178 if (sourceType == "optional-extra") 179 { 180 var MainProductId = Dynamicweb.Context.Current.Request.QueryString.Get("MainProductId"); 181 string? ProductOptionalExtra; 182 if (!string.IsNullOrWhiteSpace(MainProductId)) 183 { 184 ProductOptionalExtra = MainProductId; 185 } else 186 { 187 ProductOptionalExtra = product?.ProductFields.GetValueOrDefault("OptionalExtra")?.Value.ToString(); 188 189 } 190 itemListArray = ($"{ProductOptionalExtra}").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray(); 191 } 192 193 // Also bought from "Dino" 194 if (sourceType == "AlsoBoughtDino") 195 { 196 if(product != null) 197 { 198 itemListArray = new Oase.Backend.Services.DinoService().GetOtherLookedAt(product.Number, Pageview.Area.Name, ItemLimit); 199 } 200 } 201 202 // Bestsellers from "Dino" 203 if (sourceType == "BestsellersDino") 204 { 205 itemListArray = new Oase.Backend.Services.DinoService().GetBestsellers(Pageview.Area.Name, ItemLimit); 206 } 207 208 // Cookie - Favorites and recent products 209 if (sourceType == "favorites" || sourceType == "recently-viewed") 210 { 211 itemListArray = [""]; 212 showLocalSource = sourceType; 213 } 214 215 @if (itemListArray?.Length > 0) 216 { 217 <form method="post" action="@url" id="[email protected]" data-localsource="@showLocalSource" 218 data-response-target-element="[email protected]" 219 data-preloader="inline" data-update-url="false" 220 class="[email protected]()"> 221 222 <input type="hidden" name="ParagraphId" value="@Model.ID" /> 223 <input type="hidden" name="SortOrder" value="ASC"> 224 <input type="hidden" name="SourceType" value="@sourceType"> 225 <input type="hidden" name="TitlePosition" value="@TitlePosition"> 226 <input type="hidden" name="TitleArrow" value="@TitleArrow"> 227 <input type="hidden" name="itemSourcePageId" value="@itemSourcePageId"> 228 <input type="hidden" name="ParagraphTitle" value="@ParagraphTitle"> 229 <input type="hidden" name="ParagraphTitleNav" value="@ParagraphTitleNav"> 230 <input type="hidden" name="ListOfIds" value="@string.Join(",", itemListArray)"> 231 <input type="hidden" name="MainProductId" value="@string.Join(",", itemListArray)"> 232 @if (ProductsCount != 0) 233 { 234 <input type="hidden" name="ProductsCount" value="@ProductsCount.ToString().Replace(",", ".")"> 235 } 236 @if (ProductsCountMobile != 0) 237 { 238 <input type="hidden" name="ProductsCountMobile" value="@ProductsCountMobile.ToString().Replace(",", ".")"> 239 } 240 </form> 241 242 <div class="w-100 h-100@(theme)"> 243 <div id="@Model.ID" class="user-select-none" style="scroll-margin-top:var(--header-height,150px)"></div> 244 <div id="ContentSlider_@(Model.ID)" class="h-100" style="@lazyHeight"> 245 <p class="grid placeholder-glow" style="height:400px;"> 246 <span class="placeholder g-col-3 rounded"></span> 247 <span class="placeholder g-col-3 rounded"></span> 248 <span class="placeholder g-col-3 rounded"></span> 249 <span class="placeholder g-col-3 rounded"></span> 250 </p> 251 </div> 252 </div> 253 254 <link rel="stylesheet" href="/Files/Templates/Designs/Swift/Assets/css/swiper-bundle.min.css" /> 255 <script src="/Files/Templates/Designs/Swift/Assets/js/swiper-bundle.min.js"></script> 256 <script type="module"> 257 const productSliderContainer = document.querySelector("#[email protected]"); 258 const productSliderForm = document.querySelector("#[email protected]"); 259 260 if (productSliderForm.dataset.localsource == 'favorites') { 261 let localItems = JSON.parse(localStorage.getItem('favorites-' + @(Pageview.Area.EcomShopId.Replace("SHOP",""))) || '[]'); 262 productSliderForm.querySelector('[name="ListOfIds"]').value = localItems.toString(); 263 productSliderForm.querySelector('[name="MainProductId"]').value = localItems.toString(); 264 } 265 if (productSliderForm.dataset.localsource == 'recently-viewed') { 266 let localItems = JSON.parse(localStorage.getItem('recently-viewed') || '[]'); 267 productSliderForm.querySelector('[name="ListOfIds"]').value = localItems.toString(); 268 productSliderForm.querySelector('[name="MainProductId"]').value = localItems.toString(); 269 } 270 271 swift.PageUpdater.Update(productSliderForm); 272 productSliderForm.addEventListener("updated.swift.pageupdater", function (e) { 273 if (e.detail.html === "") { 274 productSliderContainer.classList.add("d-none"); 275 } 276 }); 277 </script> 278 } 279 }

easy camp