*/ var lineNo = 1, buffer = [ "with (this.data) { \nwith (this.customData) { \nthis.buffer.push('" ], matches = html.split(new RegExp(regExpEscape(options.open) + '((?:.|[\r\n])+?)(?:' + regExpEscape(options.close) + '|$)')), length, i, text, prefix, postfix, line, tmp, jsFromPos, state; for (i = 0, length = matches.length; i < length; i++) { text = matches[i]; if (i % 2 === 1) { line = "\nthis.line=" + lineNo; jsFromPos = 1; state = STATE_RAW; switch (text.charAt(0)) { case '@': prefix = '\',(' + line + ', this.partial('; postfix = ')),\''; state = STATE_PARTIAL; break; case '!': prefix = '\',(' + line + ', this.extend('; postfix = ')),\''; state = STATE_EXTEND; break; case '*': prefix = '\',(' + line + ', this.child(\''; postfix = '\')),\''; break; case '[': prefix = '\');' + line + ';this.blockStart(\''; postfix = '\');this.buffer.push(\''; break; case ']': prefix = '\');' + line + ';this.blockEnd(\''; postfix = '\');this.buffer.push(\''; break; case '=': prefix = '\',(' + line + ', '; postfix = '),\''; state = STATE_HTML; break; case '-': prefix = '\',(' + line + ', '; postfix = '),\''; state = STATE_TEXT; break; case '-': prefix = '\',(' + line + ', '; postfix = '),\''; state = STATE_TEXT; break; case '?': prefix = '\');' + line + ';'; postfix = 'this.buffer.push(\''; state = STATE_CONDITION; break; case ':': prefix = '\');' + line + ';}else'; postfix = 'this.buffer.push(\''; state = STATE_ELSE; break; case '|': prefix = '\');' + line + ';'; postfix = 'this.buffer.push(\''; state = STATE_LOOP; break; case '~': prefix = '\');' + line + ';'; postfix = 'this.buffer.push(\''; state = STATE_SUBBLOK; break; default: prefix = '\');' + line + ';'; postfix = ';this.buffer.push(\''; jsFromPos = 0; } switch (state) { case STATE_RAW: buffer.push(prefix, text.substr(jsFromPos).replace(trimExp, ''), postfix); break; case STATE_HTML: buffer.push(prefix, 'JustWaitResults('+text.substr(jsFromPos).replace(trimExp, '')+')', postfix); break; case STATE_TEXT: buffer.push(prefix, 'JustEscapeHtml('+text.substr(jsFromPos).replace(trimExp, '')+')', postfix); break; case STATE_CONDITION: tmp = text.substr(jsFromPos).replace(trimExp, ''); if (!tmp.length) { buffer.push(prefix, '}', postfix); } else { buffer.push(prefix, 'if(', tmp, '){', postfix); } tmp = undefined; break; case STATE_ELSE: tmp = text.substr(jsFromPos).replace(trimExp, ''); if (!tmp.length) { buffer.push(prefix, '{', postfix); } else { buffer.push(prefix, ' if(', tmp, '){', postfix); } tmp = undefined; break; case STATE_PARTIAL: case STATE_EXTEND: tmp = text.substr(jsFromPos).replace(trimExp, '').split(/\s+/); tmp = ['\'' + tmp[0] + '\'', tmp.splice(1).join(' ')]; if (!tmp[1].length) { tmp = tmp[0]; } else { tmp = tmp.join(''); } buffer.push(prefix, tmp, postfix); tmp = undefined; break; case STATE_LOOP: tmp = text.substr(jsFromPos).replace(trimExp, '').split(/\s+/); if (!tmp[0].length) { buffer.push('\');' + line + ';}, this);this.buffer.push(\''); } else { buffer.push(prefix, tmp[0], '.forEach(function(', tmp[1], '){this.buffer.push(\''); } tmp = undefined; break; case STATE_SUBBLOK: buffer.push(prefix, text.substr(jsFromPos).replace(trimExp, ''), postfix); break; } } else { buffer.push(text.replace(/[\\']/g, '\\$&').replace(/\r/g, ' ').replace(/\n/g, '\\n')); } lineNo += text.split(/\n/).length - 1; } buffer.push("'); \n} \n} return this.buffer;"); return buffer = buffer.join(''); }, parse = function (html) { return new Function(parseToCode(html)); }, readSync = function (file) { var data = eval('(options.root[\'' + file + '\'])'); if (Object.prototype.toString.call(data) === '[object String]') { return data; } else { console.error('Failed to load template', file) throw 'Failed to load template ' + file } }, loadSync = function (file) { var data = readSync(file) var blank = parse(data); return blank; }, Template = function (file, data, customData) { this.file = file; if (Object.prototype.toString.call(options.root) === '[object String]') { this.file = path.normalize((options.root.length ? (options.root + '/') : '') + file + options.ext); } this.data = data; this.customData = customData || {}; this.buffer = []; this.tmpBuffer = {}; this.tmpBufferNames = []; this.watcher = undefined; this.line = 1; this.partials = []; this.childData = []; this.childError = undefined; this.childCallback = undefined; this.callback = undefined; this.blocks = {}; }; Template.prototype.blockStart = function (name) { this.tmpBufferNames.push(name) this.tmpBuffer[name] = this.buffer; if (!this.blocks[name]) { this.blocks[name] = []; } if (!this.blocks[name].length) { this.buffer = this.blocks[name]; } else { this.buffer = []; } }; Template.prototype.blockEnd = function () { var name = this.tmpBufferNames.pop(name) this.buffer = this.tmpBuffer[name]; delete (this.tmpBuffer[name]); }; // Включить результат рендера шаблона template с данными customData Template.prototype.partial = function (template, customData) { var page = new Template(template, this.data, customData); return page.renderSync(); }; Template.prototype.partialWatch = function (v, data) { var template = data[0] var customData = data[1] var page = new Template(template, customData, undefined); return page.renderSync(); }; Template.prototype.extend = function (template, customData) { var page = new Template(template, this.data, customData) var callback = this.callback; page.blocks = this.blocks; this.callback = function (error, data) { if (error) { page.childError = error; if (page.childCallback) { page.childCallback(error); } } else { page.childData.push(data); if (page.childCallback) { page.childCallback(); } } }; page.partials.push(function (callback) { if (page.childError) { callback(page.childError); } else if (page.childData.length) { callback(); } else { page.childCallback = callback; } }); //callback(undefined, page.renderSync()); return page.renderSync(); }; Template.prototype.child = function (block) { if (block && block.length) { if (!this.blocks[block]) { this.blocks[block] = []; } return this.blocks[block]; } return this.childData; }; function arrayRender(arr){ let html = '' for(let i in arr) { html += (Array.isArray(arr[i])) ? arrayRender(arr[i]) : arr[i]; } return html } Template.prototype.renderSync = function () { var that = this; var blank = loadSync(this.file) // try { var buffer = blank.call(that); for(var i = 0; i < that.partials.length; i++) { that.partials[i].call(); } var html = '', length, i; for (i = 0, length = buffer.length; i < length; i++) { html += (Array.isArray(buffer[i])) ? arrayRender(buffer[i]) : buffer[i]; } return html; // } catch (e) { // console.error(e.message + ' in ' + that.file + ' on line ' + that.line); // throw e.message + ' in ' + that.file + ' on line ' + that.line // return; // } }; this.configure = function (newOptions) { var option; newOptions = newOptions || {}; for (option in options) { options[option] = newOptions[option] || options[option]; } }; this.renderSync = function (template, data, onInsertFunc) { if(data === undefined) { data = {} } var tpl = new Template(template, data); var html = tpl.renderSync(); if(html == undefined) { console.error("renderSync error", template, data) } if(typeof onInsertFunc == 'function') { html = this.onInsert(html, onInsertFunc, false); } return html; }; this.render = this.renderSync this.isTplExists = function(name){ return options.root[name] !== undefined } /** * При вставке этого html в дом дерево будет выполнена функция func * @param {type} html * @param {type} func * @returns {unresolved} */ this.onInsert = onInsert this.configure(newOptions); }; if (!Array.prototype.filter) { Array.prototype.filter = function (fun, thisp) { var len = this.length, res = [], i, val; if (typeof fun !== 'function') { throw new TypeError(); } for (i = 0; i < len; i++) { if (i in this) { val = this[i]; if (fun.call(thisp, val, i, this)) { res.push(val); } } } return res; }; } if (!Array.prototype.forEach) { Array.prototype.forEach = function (fun, thisp) { var len = this.length, i; if (typeof fun !== 'function') { throw new TypeError(); } for (i = 0; i < len; i++) { if (i in this) { fun.call(thisp, this[i], i, this); } } }; } if (!Array.isArray) { Array.isArray = function (obj) { return Object.prototype.toString.call(obj) === '[object Array]'; }; } var cbSplit; if (!cbSplit) { cbSplit = function (str, separator, limit) { if (Object.prototype.toString.call(separator) !== '[object RegExp]') { return cbSplit.nativeSplit.call(str, separator, limit); } var output = [], lastLastIndex = 0, flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.sticky ? 'y' : ''), separator2, match, lastIndex, lastLength; separator = new RegExp(separator.source, flags + 'g'); str = str + ''; if (!cbSplit.compliantExecNpcg) { separator2 = new RegExp('^' + separator.source + '$(?!\\s)', flags); } if (limit === undefined || +limit < 0) { limit = Infinity; } else { limit = Math.floor(+limit); if (!limit) { return []; } } while (match = separator.exec(str)) { lastIndex = match.index + match[0].length; if (lastIndex > lastLastIndex) { output.push(str.slice(lastLastIndex, match.index)); if (!cbSplit.compliantExecNpcg && match.length > 1) { match[0].replace(separator2, function () { var i; for (i = 1; i < arguments.length - 2; i++) { if (arguments[i] === undefined) { match[i] = undefined; } } }); } if (match.length > 1 && match.index < str.length) { Array.prototype.push.apply(output, match.slice(1)); } lastLength = match[0].length; lastLastIndex = lastIndex; if (output.length >= limit) { break; } } if (separator.lastIndex === match.index) { separator.lastIndex++; } } if (lastLastIndex === str.length) { if (lastLength || !separator.test('')) { output.push(''); } } else { output.push(str.slice(lastLastIndex)); } return output.length > limit ? output.slice(0, limit) : output; }; cbSplit.compliantExecNpcg = /()??/.exec('')[1] === undefined; cbSplit.nativeSplit = String.prototype.split; } String.prototype.split = function (separator, limit) { return cbSplit(this, separator, limit); }; window.JUST = JUST; window.JUST.onInsert = onInsert; window.JUST.getUUID = getUUID; window.JUST.__JUST_onInsertFunctions = __JUST_onInsertFunctions; window.JUST.JustEvalJsPattern_pageUUID = JustEvalJsPattern_pageUUID; window.JUST.JustEvalJsPattern = JustEvalJsPattern; }()); function JustEscapeHtml(text) { var map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }; if(!text || !text.replace) { return text; } return text.replace(/[&<>"']/g, function(m) { return map[m]; }); } function JustWaitResults(data) { if(typeof data == "object") { if(data.then) { let id = "just-"+Math.random()+""+Math.random() id = id.replace(/0\./g, ""); return JUST.onInsert('
', function() { data.then((d) => { $("#"+id).replaceWithTpl(d) }, (e) => { $("#"+id).replaceWithTpl(e) }) }, true) } } return data } justCall_mapArr = [] function justCall(obj) { var index = justCall_mapArr.length justCall_mapArr.push(obj) return 'justCall_mapArr['+index+']' } function justOn(event, action){ let id = Math.floor(Math.random()*900000); return JUST.onInsert(" id='"+id+"' ", function(){ $("#"+id).on(event, action) }, true) } JUST.onInsert("", alert, true) JUST.onInsert("", alert, true)

Dickson Infinity 3.2m


Technical Specifications

ValueStandards
Composition: 100% solution dyed acrylic - high tenacity
Finish: Cleangard special dirt-resistant and water resistant treatment
Weight: 290 g/m²
Guarantee: 10 year
  • Features
  • Fade resistant
  • Protects from the UV and Heat
  • Mold Resistant
  • Water & Stain Resistant
  • Tear Resistant
  • Easy Care

Infinity by Dickson revolutionises broad-span awnings. With its extra wide 3.2-metre span, Infinity awning allows you to create seamless sun protection for optimal aesthetic results. Its unique high-resistance weave ensures even weft and warp elongation, allowing for single-piece construction to prevent thickening and reduce distortion. Available in 15 solid colours, Infinity adds character to any terrace.

Plain

0001 WHITE
0681 DUNE
6020 RAW
3914 PARIS RED
8203 SLATE
6028 BLACK
7559 TAUPE
U171 CARBONE
U104 FLANELLE
6196 STONE
8396 LEAD CHINE
U337 Suede
6088 Grey
U406 Steel

** Values for the metallic side exposed
to the exterior.