-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathakFillFromJSON.min.js
More file actions
2 lines (2 loc) · 12.4 KB
/
Copy pathakFillFromJSON.min.js
File metadata and controls
2 lines (2 loc) · 12.4 KB
1
2
/*! akFillFromJSON v2 2026-08-11 | https://github.com/akwebapps/ak-FillFromJSON | (c) 2026 AK Web Apps | @license Licensed MIT */
"undefined"==typeof akPluginArr&&(akPluginArr={}),function(a){a.fn.akFillFromJSON=function(t,e){this.each(function(){new a.akFillFromJSON(this,t,e)})},a.akFillFromJSON=function(t,e,l){var i={readOnly:!1,joinBy:", ",replaceArr:[],lazyLoading:!1,recordCount:null,loadMoreLabel:"Load More",append:!1,data:{},primaryKey:"",fromFieldEvent:!1,template:null,beforeObj:function(a,t,e,l){},beforeFill:function(a,t,e,l,i){},callback:function(a,t,e,l){},showLog:!1},r=this;r.holder=null,r.settings={};var n,o=function(){r.settings=a.extend(!0,{},i,Array.isArray(e)?{data:e}:e);var l=r.settings,n=h(l.data),o=l.primaryKey,c=n&&("string"!=typeof n||""!=n)&&(!Array.isArray(n)||n.length),p=!1;if(""!=o&&(n=s(o,n)),""==o&&n&&Array.isArray(n)){o=a(t).attr("data-field");var g=a(t).attr("class");!o&&g&&a(g.split(" ")).each(function(a,t){t.indexOf("Div")>0&&(o=t.replace("Div",""))}),o||(n=n[0])}l.data=n,l.primaryKey=o,"object"!=typeof n||Array.isArray(n)?Array.isArray(n)&&n.length&&"object"==typeof n[0]&&!Array.isArray(n[0])?d():""!=o&&f(o,n):(p=!0,a.each(n,function(e,i){var r=e.replaceAll(" ","-");a(t).akFillFromJSON(a.extend({},l,{primaryKey:r,data:i}))})),p||""==o||(l.fromFieldEvent||a("."+o,t).parents(".akForm").length&&a("."+o,t).filter("input, select, textarea").length||"function"==typeof toggleFieldRow&&toggleFieldRow(o,c?n:"",t),c?(a(".not-"+o+"Div",t).akHide(),a("."+o+"Div",t).akShow()):(a(".not-"+o+"Div",t).akShow(),a("."+o+"Div",t).akHide()))},d=function(){r.fillObject=a.extend(!0,{id:"",idField:"",template:null,templateObj:null,placeholder:null,placeholderObj:null,container:null,currentIndex:0,working:!1},r.fillObject||{});var e=r.settings,l=e.data,i=e.primaryKey,n="function"==typeof e.append?e.append():e.append;e.template=null,e.beforeObj(i,a(t),l,e);var o=(a(t).hasClass(i+"Div")?a(t):a("."+i+"Div",t)).filter(function(){return!a(this).parents("."+i+"Div:not(.akFillHolder)").length});if(o.length>1)embedded=!0,o.each(function(t,r){o.addClass("akFillHolder").attr("data-field",i),a(r).akFillFromJSON(a.extend({},e,{fieldName:i,data:l}))});else if(1==o.length){var d,s=r.fillObject;if(s.id=o.attr("id")||randomStr(6),r.holder=o,o.attr("id",s.id).addClass("akFillHolder").attr("data-field",i),s.templateObj||((d=s.template)||(d=o.data("template")||null),d&&"string"==typeof d&&0==d.indexOf("<")?s.templateObj=a(d):d&&"string"==typeof d&&a(d).length?s.templateObj=a(d).clone():d?s.templateObj=d:a("."+i+"-item",o).length&&(s.templateObj=a("."+i+"-item",o).first().clone())),!s.placeholder&&e.lazyLoading){var f=s.placeholder;f||(f=o.data("placeholder")||null),f&&"string"==typeof f&&0==f.indexOf("<")?s.placeholderObj=a(f):f&&"string"==typeof f&&a(f).length?s.placeholderObj=a(f).clone():f&&"string"==typeof f&&f.indexOf(".")>0&&(s.placeholderObj=a("<img src='"+f+"'>"))}if(s.container||(s.container=a("."+i+"-holder",o).length?a("."+i+"-holder",o):o),!a("."+i+"-placeholder",s.container).length){const t=a("<div class='"+i+"-placeholder d-none' style='display:none'></div>");a("."+i+"-item",s.container).length?a("."+i+"-item",s.container).first().after(t):s.container.append(t)}s.idField||(s.idField=o.data("assign")||s.container.data("assign")||""),s.templateObj&&(n&&o.hasClass("akinit")||r.clearItems(),c(),o.addClass("akinit"),akPluginArr.fills||(akPluginArr.fills={}),akPluginArr.fills[s.id]=r)}},s=function(e,l){var i=r.settings,n=l,o=a("."+e+"Val.toFileLink");if(o.length){Array.isArray(l)||(l=[l]);for(var d=a("<div></div>"),s=0;s<l.length;s++){var f=l[s];if("object"==typeof f&&f.filename&&f.filename,"string"==typeof f){var c=f.substring(f.lastIndexOf(".")+1,f.length),h=f.indexOf("/")>=0?f.substring(f.lastIndexOf("/")+1,f.length):f;c=("string"==typeof c?c.toLowerCase():f)||f,d.append("<div><a href='"+f+"' target='_blank'><"+h+"</a></div>")}}a("a",d).length&&o.append(d),n=""}var g=a("."+e+":not(.static)",t).filter(function(){return!a(this).parents(".stopProp").length});return g.length&&("string"!=typeof e&&(e=g.attr("data-field")||g.attr("name")||""),(1==i.showLog||Array.isArray(i.showLog)&&i.showLog.indexOf("fields")>=0)&&p(["set field value",e,l,g]),i.readOnly||g.val(l).trigger("change")),n},f=function(e,l,i){var n=r.settings,o=l||"",d=n.replaceArr;d&&d.length&&("string"==typeof d[0]&&(o=[o]),a(d).each(function(a,t){o=o.replaceAll(t[0],t[1])})),(1==n.showLog||Array.isArray(n.showLog)&&n.showLog.indexOf("display")>=0)&&p(["set display element",e,o,t]),a("."+e+"Val:not([data-path]), [data-param='"+e+"']:not([data-path])",t).filter(":not(img):not(iframe):not(object):not(embed):not(video)").html(o),a("img, iframe, embed, video",t).filter(function(){return(a(this).not("[data-path]")||o.toString().indexOf("//")>=0||0==o.toString().indexOf("/"))&&(a(this).hasClass(e+"Val")||a(this).is("[data-param='"+e+"']"))}).attr("src",o),a("object."+e+"Val, object[data-param='"+e+"']",t).filter(function(){return a(this).not("[data-path]")||o.toString().indexOf("//")>=0||0==o.toString().indexOf("/")}).attr("data",o),a("a."+e+"Val-link, a[data-param='"+e+"']",t).attr("href",o),a("a."+e+"Val-email",t).attr("href","mailto:"+o),a("a."+e+"Val-social[data-base]",t).each(function(){var t=a(this).attr("data-base");a(this).attr("href",t+("/"!=t.slice(-1)&&"/"!=l.substr(0,1)?"/":"")+l)}),a("a."+e+"Val-tel",t).attr("href","tel:"+o).text(o),a("."+e+"Val-inpV",t).attr("value",o),a("."+e+"Val-title",t).attr("title",o),a("."+e+"Val-inpN",t).attr("name",o).addClass(o),a("."+e+"Val-class",t).each(function(){a(this).attr("data-orig-class")||a(this).attr("data-orig-class",a(this).attr("class"));var t=a(this).data("orig-class")+(""!=o?" "+o:"");a(this).attr("class",t)});var s=slugify(e,!0,!0);if(a("."+e+"Val-attr",t).attr("data-"+s,o),a("."+e+"Val-data[data-"+s+"]",t).each(function(){var t=a(this).attr("data-"+s);a(this).attr("data-"+t,o)}),""==o.toString()&&a("."+e+"Val[data-placeholder!=''], [data-param='"+e+"'][data-placeholder!='']",t).length&&a("."+e+"Val[data-placeholder], [data-param='"+e+"'][data-placeholder]",t).each(function(){a(this).html(a(this).attr("data-placeholder"))}),o.toString().indexOf("//")<0&&0!=o.toString().indexOf("/")&&a("[data-path], [data-default], [data-append]",t).filter(function(){return(a(this).is("img")||a(this).is("iframe")||a(this).is("embed")||a(this).is("video")||a(this).is("object")||a(this).hasClass(e+"Val-link"))&&(a(this).hasClass(e+"Val")||a(this).hasClass(e+"Val-link")||a(this).is("[data-param='"+e+"']"))}).each(function(){var t=o?a(this).attr("data-path")||"":a(this).attr("data-default")||"",l=o&&a(this).attr("data-append")||"",i=a(this).is("object")?"data":a(this).hasClass(e+"Val-link")?"href":"src",r=t&&t.length&&o&&o.length&&"/"!=t.slice(-1)&&"#"!=t.slice(-1)&&"/"!=o.substr(0,1)?"/":"";a(this).attr(i,t+r+o+l)}),l){if(a("."+e+"Val.camelCase",t).length&&a("."+e+"Val.camelCase",t).html(camelCase(l)),a("."+e+"Val.pascalCase",t).length&&a("."+e+"Val.pascalCase",t).html(pascalCase(l)),a("."+e+"Val.alphaNumify",t).length&&a("."+e+"Val.alphaNumify",t).html(alphaNumify(l)),a("."+e+"Val.slugify",t).length&&a("."+e+"Val.slugify",t).html(slugify(l)),a("."+e+"Val.toHTML",t).length&&a("."+e+"Val.toHTML",t).html(l.replaceAll("\n","<br>")),a("."+e+"Val.toText",t).length&&a("."+e+"Val.toText",t).text(a("<div>"+l+"</div>").text()),a("."+e+"Val.toNumber-commas",t).html(l.toLocaleString()),a("."+e+"Val.toNumber-money",t).html(roundToPennies(l)),a("."+e+"Val.toNumber-percent",t).html(l+"%"),a("."+e+"Val.toColorBlock",t).html("<div style='background-color:"+l+"' class='sq-sm'> </div>"),a("."+e+"Val.toFAicon",t).length){var f="";(l.indexOf(" ")<=0||0!=l.indexOf("fa"))&&(f="fa "),0!=l.indexOf("fa-")&&l.indexOf(" fa-")<0&&(f+="fa-"),a("."+e+"Val.toFAicon",t).html("<i class='"+f+l+" fa-lg'></i>")}a("."+e+"Val.toEmailLink",t).html("<a href='mailto:"+l+"'>"+l+"</a>"),a("."+e+"Val[data-format]:not([data-format=''])",t).length&&moment(l).isValid()&&a("."+e+"Val[data-format]:not([data-format='']",t).each(function(){var t=a(this).attr("data-format"),e=moment(l).format(t);a(this).text(e)})}a("img."+e+"Val.fillBox").length&&a("img."+e+"Val.fillBox").fillBox(),a("."+e+"Val-title[data-toggle='tooltip']").length&&a("."+e+"Val-title[data-toggle='tooltip']").tooltip(),a("."+e+"Val-title[data-bs-toggle='tooltip']").length&&a("."+e+"Val-title[data-bs-toggle='tooltip']").tooltip(),a("."+e+"Val-title[data-toggle='popover']").length&&a("."+e+"Val-title[data-toggle='popover']").popover({animation:!1}),a("."+e+"Val-title[data-bs-toggle='popover']").length&&a("."+e+"Val-title[data-bs-toggle='popover']").popover({animation:!1}),a("."+e+"Val.toFAicon",t).length||a("."+e+"Val-class",t).length},c=function(t){var e=r.settings,l=r.fillObject,i=r.holder,n=l.container,o=e.primaryKey,d=e.data,s=l.idField,f=Math.max(document.documentElement.clientHeight,window.innerHeight||0),c=a(document).scrollTop(),h=!0,p=l.currentIndex,g=1,m=a("."+o+"-placeholder",n).length?a("."+o+"-placeholder",n):null;if(a(".akFillMoreBtnHolder",n).remove(),t){var u=p+1,y=(F=a(".akFillItem.fillMe[data-index='"+u+"'][data-fill-field='"+o+"']",n).length?a(".akFillItem.fillMe[data-index='"+u+"'][data-fill-field='"+o+"']",n):a(".akFillItem.fillMe",n).first()).length?F.prev(".akFillItem"):null;(e.lazyLoading||e.recordCount)&&(h=y.length&&e.lazyLoading?y.position().top<=f+c:e.recordCount&&g<=e.recordCount),h&&(p=u)}if(h){l.working=!0;for(var v=p;v<d.length;v++){var b=l.templateObj;e.template&&(b=a(e.template));var k=b.clone().attr("data-index",v).attr("data-fill-field",o).addClass("akFillItem");if(h){l.currentIndex=v;var F,O=d[v];if(e.beforeFill(o,k,O,v,e),s&&k.data("id",O[s]).attr("data-id",O[s]),k.data("fill",O),k.akFillFromJSON(a.extend({},e,{fieldName:o,data:O})),t)(F=a(".akFillItem.fillMe[data-index='"+v+"'][data-fill-field='"+o+"']",n).length?a(".akFillItem.fillMe[data-index='"+v+"'][data-fill-field='"+o+"']",n):a(".akFillItem.fillMe",n).first()).length?(F.before(k),F.remove()):m?m.before(k):n.append(k);else m?m.before(k):n.append(k);var x=a(".akFillItem[data-index='"+v+"'][data-fill-field='"+o+"']",n);e.callback(o,x,O,e),(e.recordCount||e.lazyLoading)&&(h=e.recordCount?g<=e.recordCount:x.position().top<=f+c)}else t||(l.placeholderObj?k.append(l.placeholderObj):k.addClass("fillMe hidden d-none"),m?m.before(k):n.append(k));g++}a(".akFillItem.fillMe",n).length&&d.length>l.currentIndex+1?(i.addClass("fillMore").addClass(e.lazyLoading?"fillLazy":"fillClick"),e.lazyLoading||a(".akFillMoreBtn",n).length||($moreBtn=a("<button class='akFillMoreBtn btn btn-outline-primary' type='button'>"+(e.loadMoreLabel||"Load More")+"</button>").on("click",function(t){t.preventDefault(),a(this).closest(".akFillHolder.fillMore").akFillFromJSON("more"),a(this).closest(".akFillMoreBtnHolder").remove()}),n.append(a("<div class='akFillMoreBtnHolder clearfix w-100 text-center'></div>").append($moreBtn)))):i.removeClass("fillMore fillLazy fillClick"),l.working=!1}},h=function(a){var t=a;if("string"==typeof t)try{var e=JSON.parse(t);e&&"object"==typeof e&&(t=e)}catch(a){}return t},p=function(a,t){if("undefined"==typeof showLog||showLog||1==t)if(a&&"object"==typeof a&&!Array.isArray(a)&&a.label&&""!=a.label){var e=a.style||"",l=a.label,i=(10-l.length)/2;if(l=l.padStart(l.length+i).padEnd(10),""!=e&&e.indexOf(":")<0){var r=e.indexOf("-outline")>0,n=0==(e=r?e.replace("-outline",""):e).indexOf("#")?e:null;n||(n={danger:"#cd476a",warning:"#f6d16d",success:"#80c163",primary:"#3aa8dd",secondary:"#6c757d",tertiary:"#80c163",default:"#8f979e"}[e]),n||(n="#8f979e"),e="padding:2px 4px;border-radius:3px;"+(r?"border:solid 1px "+n+";color:"+n+";":"background-color:"+n+";color:white;")}console.log("%c"+l,e,a.log||"")}else console.log(a)};if(r.getInstance=function(){var l=a(t).hasClass("akFillHolder")?a(t).attr("id")||"":e&&e.fieldName&&a(".akFillHolder[data-field='"+e.fieldName+"']",t).length?a(".akFillHolder[data-field='"+e.fieldName+"']",t)[0].id:"";return l&&akPluginArr.fills?akPluginArr.fills[l]:null},r.refresh=function(t){a(r.holder).hasClass("akinit")&&r.clearItems(),a(r.holder).akFillFromJSON(t)},r.clearItems=function(){var t=r.fillObject;if(t&&t.id){var e=r.settings.primaryKey,l=r.holder,i=t.container;t.currentIndex=0,a("."+e+"-item",i).remove(),l.removeClass("akinit")}},r.fillMore=function(){var a=r.fillObject;a&&a.id&&!a.working&&c(!0)},e&&"string"==typeof e){if((n=r.getInstance())&&"clear"==e)n.clearItems();else if(n&&"more"==e)n.fillMore();else if(n&&"get"==e)return n}else r.holder&&(n=r.getInstance())?n.refresh(e):o()},a(window).on("resize scroll",function(){a(".akFillHolder.fillMore.fillLazy .akFillItem.fillMe").length&&a(".akFillHolder.fillMore.fillLazy").each(function(){a(this).akFillFromJSON("more")})})}(jQuery);