From b6e514c9bd551f4c0d5eed3c10daeda6564fbf06 Mon Sep 17 00:00:00 2001 From: sunhao Date: Mon, 28 Aug 2023 14:04:16 +0800 Subject: [PATCH] * zin: add cache option to loadTarget helper. --- www/js/zui3/zin.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/www/js/zui3/zin.js b/www/js/zui3/zin.js index 684f6f0858..2402e6b96c 100644 --- a/www/js/zui3/zin.js +++ b/www/js/zui3/zin.js @@ -621,6 +621,17 @@ let remoteData; let loadError; + target = options.target; + if(target[0] !== '#' && target[0] !== '.') target = `#${target}`; + const $target = $(target); + if(!$target.length) return; + if(options.cache) + { + const cache = (typeof options.cache === 'number' ? options.cache : 3600) * 1000; + const lastLoad = $target.data('zin-target-load'); + if(lastLoad && (Date.now() - lastLoad) < cache) return; + } + const ajaxOptions = { url: url, @@ -642,23 +653,13 @@ if(result === false) return; if(typeof result === 'string') data = result; } - let target = options.target; - if(target[0] !== '#' && target[0] !== '.') target = `#${target}`; - const $target = $(target); - if($target.length) - { - if(options.success) options.success(data, options); - let $content = $(data); - if(options.selector) $content = $('
').append($content).find(options.selector); - if(options.replace) $target.replaceWith($content); - else $target.empty().append($content); - $target.zuiInit(); - } - else - { - loadError = new Error(`ZIN: Target "${target}" not found.`); - if(options.error) options.error(data, loadError); - } + + if(options.success) options.success(data, options); + let $content = $(data); + if(options.selector) $content = $('
').append($content).find(options.selector); + if(options.replace) $target.replaceWith($content); + else $target.empty().append($content); + $target.data('zin-target-load', Date.now()).zuiInit(); }, error: (xhr, type, error) => {