@startinblox/core 0.17.19 → 0.17.21-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/solid-ac-checker.js +3 -10
- package/dist/components/solid-ac-checker.js.map +1 -1
- package/dist/components/solid-display.js +1 -1
- package/dist/components/solid-display.js.map +1 -1
- package/dist/components/solid-form-search.js.map +1 -1
- package/dist/libs/filter.js +214 -0
- package/dist/libs/filter.js.map +1 -0
- package/dist/libs/interfaces.js.map +1 -1
- package/dist/libs/store/store.js +113 -18
- package/dist/libs/store/store.js.map +1 -1
- package/dist/mixins/filterMixin.js +2 -61
- package/dist/mixins/filterMixin.js.map +1 -1
- package/dist/mixins/widgetMixin.js +2 -2
- package/dist/mixins/widgetMixin.js.map +1 -1
- package/dist/new-widgets/templates/defaultTemplatesDirectory.js +4 -3
- package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -1
- package/dist/new-widgets/templates/displayTemplatesDirectory.js +4 -3
- package/dist/new-widgets/templates/displayTemplatesDirectory.js.map +1 -1
- package/dist/new-widgets/templates/formTemplatesDirectory.js +3 -3
- package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -1
- package/dist/new-widgets/templatesDependencies/linkTextMixin.js +14 -0
- package/dist/new-widgets/templatesDependencies/linkTextMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +18 -0
- package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -1
- package/package.json +2 -2
|
@@ -21,25 +21,18 @@ export const SolidAcChecker = {
|
|
|
21
21
|
const ContextParser = JSONLDContextParser.ContextParser;
|
|
22
22
|
const myParser = new ContextParser();
|
|
23
23
|
const context = await myParser.parse(this.context);
|
|
24
|
+
const permissions = await this.resource.permissions;
|
|
24
25
|
|
|
25
26
|
if (this.permission) {
|
|
26
27
|
// User has permission of ...
|
|
27
|
-
displayElement =
|
|
28
|
+
displayElement = permissions.some(p => {
|
|
28
29
|
return ContextParser.compactIri(p, context) === this.permission;
|
|
29
30
|
});
|
|
30
|
-
/* displayElement = await asyncSome(
|
|
31
|
-
(permission: object) => ContextParser.compactIri(permission.toString(), context) === this.permission,
|
|
32
|
-
this.resource.permissions.mode['@type']
|
|
33
|
-
)*/
|
|
34
31
|
} else if (this.noPermission) {
|
|
35
32
|
// User has no permission of ...
|
|
36
|
-
displayElement =
|
|
33
|
+
displayElement = permissions.every(p => {
|
|
37
34
|
return ContextParser.compactIri(p, context) !== this.noPermission;
|
|
38
35
|
});
|
|
39
|
-
/*displayElement = await asyncEvery(
|
|
40
|
-
(permission: object) => ContextParser.compactIri(permission.toString(), context) !== this.noPermission,
|
|
41
|
-
this.resource.permissions.mode['@type']
|
|
42
|
-
)*/
|
|
43
36
|
} else {
|
|
44
37
|
// No parameter provided
|
|
45
38
|
console.warn('solid-ac-checker: you should define at least one of "permission" or "no-permission" attribute.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["solid-ac-checker.ts"],"names":["JSONLDContextParser","Sib","StoreMixin","SolidAcChecker","name","use","attributes","permission","type","String","default","noPermission","populate","resource","displayElement","ContextParser","myParser","context","parse","permissions","some","p","compactIri","every","console","warn","element","removeAttribute","empty","setAttribute","register"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,uBAAhC;AACA,SAASC,GAAT,QAAoB,aAApB;AACA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,OAAO,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,kBADsB;AAE5BC,EAAAA,GAAG,EAAE,CAACH,UAAD,CAFuB;AAG5BI,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAEC,MADI;AAEVC,MAAAA,OAAO,EAAE;AAFC,KADF;AAKVC,IAAAA,YAAY,EAAE;AACZH,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAE;AAFG;AALJ,GAHgB;;AAc5B,QAAME,QAAN,GAAgC;AAC9B,QAAI,CAAC,KAAKC,QAAV,EAAoB;AACpB,QAAIC,cAAJ;AACA,UAAMC,aAAa,GAAGf,mBAAmB,CAACe,aAA1C;AACA,UAAMC,QAAQ,GAAG,IAAID,aAAJ,EAAjB;AACA,UAAME,OAAO,GAAG,MAAMD,QAAQ,CAACE,KAAT,CAAe,KAAKD,OAApB,CAAtB;;AAEA,QAAI,
|
|
1
|
+
{"version":3,"sources":["solid-ac-checker.ts"],"names":["JSONLDContextParser","Sib","StoreMixin","SolidAcChecker","name","use","attributes","permission","type","String","default","noPermission","populate","resource","displayElement","ContextParser","myParser","context","parse","permissions","some","p","compactIri","every","console","warn","element","removeAttribute","empty","setAttribute","register"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,uBAAhC;AACA,SAASC,GAAT,QAAoB,aAApB;AACA,SAASC,UAAT,QAA2B,sBAA3B;AAEA,OAAO,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,kBADsB;AAE5BC,EAAAA,GAAG,EAAE,CAACH,UAAD,CAFuB;AAG5BI,EAAAA,UAAU,EAAE;AACVC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAEC,MADI;AAEVC,MAAAA,OAAO,EAAE;AAFC,KADF;AAKVC,IAAAA,YAAY,EAAE;AACZH,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAE;AAFG;AALJ,GAHgB;;AAc5B,QAAME,QAAN,GAAgC;AAC9B,QAAI,CAAC,KAAKC,QAAV,EAAoB;AACpB,QAAIC,cAAJ;AACA,UAAMC,aAAa,GAAGf,mBAAmB,CAACe,aAA1C;AACA,UAAMC,QAAQ,GAAG,IAAID,aAAJ,EAAjB;AACA,UAAME,OAAO,GAAG,MAAMD,QAAQ,CAACE,KAAT,CAAe,KAAKD,OAApB,CAAtB;AACA,UAAME,WAAW,GAAG,MAAM,KAAKN,QAAL,CAAcM,WAAxC;;AAEA,QAAI,KAAKZ,UAAT,EAAqB;AAAE;AACrBO,MAAAA,cAAc,GAAGK,WAAW,CAACC,IAAZ,CAAkBC,CAAD,IAAW;AAC3C,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKV,UAArD;AACD,OAFgB,CAAjB;AAGD,KAJD,MAIO,IAAI,KAAKI,YAAT,EAAuB;AAAE;AAC9BG,MAAAA,cAAc,GAAGK,WAAW,CAACI,KAAZ,CAAmBF,CAAD,IAAW;AAC5C,eAAON,aAAa,CAACO,UAAd,CAAyBD,CAAzB,EAA4BJ,OAA5B,MAAyC,KAAKN,YAArD;AACD,OAFgB,CAAjB;AAGD,KAJM,MAIA;AAAE;AACPa,MAAAA,OAAO,CAACC,IAAR,CAAa,gGAAb;AACA;AACD;;AAED,QAAIX,cAAJ,EAAoB,KAAKY,OAAL,CAAaC,eAAb,CAA6B,QAA7B;AACrB,GApC2B;;AAqC5BC,EAAAA,KAAK,GAAS;AACZ,SAAKF,OAAL,CAAaG,YAAb,CAA0B,QAA1B,EAAoC,EAApC;AACD;;AAvC2B,CAAvB;AA0CP5B,GAAG,CAAC6B,QAAJ,CAAa3B,cAAb","sourcesContent":["import JSONLDContextParser from 'jsonld-context-parser';\nimport { Sib } from '../libs/Sib';\nimport { StoreMixin } from '../mixins/storeMixin';\n\nexport const SolidAcChecker = {\n name: 'solid-ac-checker',\n use: [StoreMixin],\n attributes: {\n permission: {\n type: String,\n default: '',\n },\n noPermission: {\n type: String,\n default: '',\n }\n },\n\n async populate(): Promise<void> {\n if (!this.resource) return;\n let displayElement: boolean;\n const ContextParser = JSONLDContextParser.ContextParser;\n const myParser = new ContextParser();\n const context = await myParser.parse(this.context);\n const permissions = await this.resource.permissions;\n\n if (this.permission) { // User has permission of ...\n displayElement = permissions.some((p:any) => {\n return ContextParser.compactIri(p, context) === this.permission;\n });\n } else if (this.noPermission) { // User has no permission of ...\n displayElement = permissions.every((p:any) => {\n return ContextParser.compactIri(p, context) !== this.noPermission;\n });\n } else { // No parameter provided\n console.warn('solid-ac-checker: you should define at least one of \"permission\" or \"no-permission\" attribute.');\n return;\n }\n\n if (displayElement) this.element.removeAttribute('hidden');\n },\n empty(): void {\n this.element.setAttribute('hidden', '');\n }\n};\n\nSib.register(SolidAcChecker);"]}
|
|
@@ -177,7 +177,7 @@ export const SolidDisplay = {
|
|
|
177
177
|
|
|
178
178
|
for (let attr of this.element.attributes) {
|
|
179
179
|
//copy widget and value attributes
|
|
180
|
-
if (attr.name.startsWith('value-') || attr.name.startsWith('label-') || attr.name.startsWith('placeholder-') || attr.name.startsWith('widget-') || attr.name.startsWith('class-') || attr.name.startsWith('multiple-') || attr.name.startsWith('editable-') || attr.name.startsWith('action-') || attr.name.startsWith('default-') || attr.name == 'extra-context') attributes[attr.name] = attr.value;
|
|
180
|
+
if (attr.name.startsWith('value-') || attr.name.startsWith('label-') || attr.name.startsWith('placeholder-') || attr.name.startsWith('widget-') || attr.name.startsWith('class-') || attr.name.startsWith('multiple-') || attr.name.startsWith('editable-') || attr.name.startsWith('action-') || attr.name.startsWith('default-') || attr.name.startsWith('link-text-') || attr.name == 'extra-context') attributes[attr.name] = attr.value;
|
|
181
181
|
if (attr.name.startsWith('child-')) attributes[attr.name.replace(/^child-/, '')] = attr.value;
|
|
182
182
|
|
|
183
183
|
if (attr.name == 'next') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["solid-display.ts"],"names":["Sib","WidgetMixin","ListMixin","StoreMixin","PaginateMixin","FilterMixin","CounterMixin","SorterMixin","GrouperMixin","FederationMixin","HighlighterMixin","NextMixin","RequiredMixin","spread","html","render","ifDefined","SolidDisplay","name","use","attributes","defaultWidget","type","String","default","initialState","activeSubscription","removeActiveSubscription","created","route","document","querySelector","setTimeout","resourceId","addActiveCallback","detached","PubSub","unsubscribe","updateNavigateSubscription","subscribe","bind","element","setAttribute","removeActiveCallback","removeAttribute","childTag","dataset","child","tagName","defaultMultipleWidget","defaultSetWidget","dispatchSelect","event","linkTarget","target","closest","hasAttribute","resource","dispatchEvent","CustomEvent","detail","goToNext","enterKeydownAction","keyCode","getChildTemplate","template","fields","appendSingleElt","parent","getFields","widgetTemplates","Promise","all","map","field","createWidgetTemplate","renderDOM","resources","listPostProcessors","div","context","getChildAttributes","r","nextProcessor","shift","attr","startsWith","value","replace","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { ListMixin } from '../mixins/listMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { PaginateMixin } from '../mixins/paginateMixin';\nimport { FilterMixin } from '../mixins/filterMixin';\nimport { CounterMixin } from '../mixins/counterMixin';\nimport { SorterMixin } from '../mixins/sorterMixin';\nimport { GrouperMixin } from '../mixins/grouperMixin';\nimport { FederationMixin } from '../mixins/federationMixin';\nimport { HighlighterMixin } from '../mixins/highlighterMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { RequiredMixin } from '../mixins/requiredMixin';\nimport { spread } from '../libs/lit-helpers';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const SolidDisplay = {\n name: 'solid-display',\n use: [\n WidgetMixin,\n ListMixin,\n StoreMixin,\n PaginateMixin,\n GrouperMixin,\n CounterMixin,\n HighlighterMixin,\n FilterMixin,\n SorterMixin,\n RequiredMixin,\n FederationMixin,\n NextMixin,\n ],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-display-value',\n },\n },\n initialState: {\n activeSubscription: null,\n removeActiveSubscription: null,\n },\n created(): void {\n // Set route active at initialization\n const route = document.querySelector('solid-route[active]') as any;\n if (!route) return;\n setTimeout(() => {\n if (route['resourceId'] === this.resourceId) this.addActiveCallback();\n });\n },\n detached(): void {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n if (this.removeActiveSubscription) PubSub.unsubscribe(this.removeActiveSubscription);\n },\n // Update subscription when id changes\n updateNavigateSubscription() {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n\n if (this.resourceId) {\n this.activeSubscription = PubSub.subscribe(\n 'enterRoute.' + this.resourceId,\n this.addActiveCallback.bind(this)\n );\n }\n },\n addActiveCallback() {\n this.element.setAttribute('active', '');\n this.removeActiveSubscription = PubSub.subscribe(\n 'leaveRoute',\n this.removeActiveCallback.bind(this)\n );\n },\n removeActiveCallback() {\n this.element.removeAttribute('active');\n PubSub.unsubscribe(this.removeActiveSubscription);\n },\n get childTag(): string {\n return this.element.dataset.child || this.element.tagName;\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n // Here \"even.target\" points to the content of the widgets of the children of solid-display\n dispatchSelect(event: Event, resourceId: string): void {\n const linkTarget = (event!.target as Element).closest('a');\n if (linkTarget && linkTarget.hasAttribute('href')) return;\n const resource = { \"@id\": resourceId };\n this.element.dispatchEvent(\n new CustomEvent('resourceSelect', { detail: { resource: resource } }),\n );\n this.goToNext(resource);\n },\n \n enterKeydownAction (event, resourceId: string): void {\n if (event.keyCode === 13) {\n const resource = { \"@id\" : resourceId };\n this.goToNext(resource);\n }\n },\n /**\n * Returns template of a child element (resource)\n * @param resourceId\n * @param attributes\n */\n getChildTemplate(resourceId: string, attributes: object) {\n let template = html`\n <solid-display\n data-src=${resourceId}\n @click=${(event: Event) => this.dispatchSelect(event, resourceId)}\n @keydown=${(event: Event) => this.enterKeydownAction(event, resourceId)}\n fields=${ifDefined(this.fields)}\n ...=${spread(attributes)}\n ></solid-display>\n `\n return template;\n },\n\n /**\n * Creates and render the content of a single element (resource)\n * @param parent\n */\n async appendSingleElt(parent: HTMLElement): Promise<void> {\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all( // generate all widget templates\n fields.map((field: string) => this.createWidgetTemplate(field))\n );\n render(html`${widgetTemplates}`, parent);\n },\n\n /**\n * @override listMixin method to use litHtml\n *\n * Render resources from a container\n * @param resources\n * @param listPostProcessors\n * @param div\n * @param context\n */\n async renderDOM(\n resources: object[],\n listPostProcessors: Function[],\n div: HTMLElement,\n context: string,\n ) {\n const attributes = this.getChildAttributes(); // get attributes of children only once\n // and create a child template for each resource\n const template = html`${resources.map(r => r ? this.getChildTemplate(r['@id'], attributes) : null)}`;\n render(template, div);\n\n const nextProcessor = listPostProcessors.shift();\n if (nextProcessor)\n await nextProcessor(\n resources,\n listPostProcessors,\n div,\n context\n );\n },\n\n /**\n * Get attributes to dispatch to children from current element\n */\n getChildAttributes() {\n const attributes:{[key:string]: string} = {};\n for (let attr of this.element.attributes) {\n //copy widget and value attributes\n if (\n attr.name.startsWith('value-') ||\n attr.name.startsWith('label-') ||\n attr.name.startsWith('placeholder-') ||\n attr.name.startsWith('widget-') ||\n attr.name.startsWith('class-') ||\n attr.name.startsWith('multiple-') ||\n attr.name.startsWith('editable-') ||\n attr.name.startsWith('action-') ||\n attr.name.startsWith('default-') ||\n attr.name == 'extra-context'\n )\n attributes[attr.name] = attr.value;\n if (attr.name.startsWith('child-'))\n attributes[attr.name.replace(/^child-/, '')] = attr.value;\n if (attr.name == 'next') {\n attributes['role'] = 'button';\n attributes['tabindex'] = '0';\n }\n }\n return attributes;\n }\n};\n\nSib.register(SolidDisplay);\n"]}
|
|
1
|
+
{"version":3,"sources":["solid-display.ts"],"names":["Sib","WidgetMixin","ListMixin","StoreMixin","PaginateMixin","FilterMixin","CounterMixin","SorterMixin","GrouperMixin","FederationMixin","HighlighterMixin","NextMixin","RequiredMixin","spread","html","render","ifDefined","SolidDisplay","name","use","attributes","defaultWidget","type","String","default","initialState","activeSubscription","removeActiveSubscription","created","route","document","querySelector","setTimeout","resourceId","addActiveCallback","detached","PubSub","unsubscribe","updateNavigateSubscription","subscribe","bind","element","setAttribute","removeActiveCallback","removeAttribute","childTag","dataset","child","tagName","defaultMultipleWidget","defaultSetWidget","dispatchSelect","event","linkTarget","target","closest","hasAttribute","resource","dispatchEvent","CustomEvent","detail","goToNext","enterKeydownAction","keyCode","getChildTemplate","template","fields","appendSingleElt","parent","getFields","widgetTemplates","Promise","all","map","field","createWidgetTemplate","renderDOM","resources","listPostProcessors","div","context","getChildAttributes","r","nextProcessor","shift","attr","startsWith","value","replace","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { ListMixin } from '../mixins/listMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { PaginateMixin } from '../mixins/paginateMixin';\nimport { FilterMixin } from '../mixins/filterMixin';\nimport { CounterMixin } from '../mixins/counterMixin';\nimport { SorterMixin } from '../mixins/sorterMixin';\nimport { GrouperMixin } from '../mixins/grouperMixin';\nimport { FederationMixin } from '../mixins/federationMixin';\nimport { HighlighterMixin } from '../mixins/highlighterMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { RequiredMixin } from '../mixins/requiredMixin';\nimport { spread } from '../libs/lit-helpers';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const SolidDisplay = {\n name: 'solid-display',\n use: [\n WidgetMixin,\n ListMixin,\n StoreMixin,\n PaginateMixin,\n GrouperMixin,\n CounterMixin,\n HighlighterMixin,\n FilterMixin,\n SorterMixin,\n RequiredMixin,\n FederationMixin,\n NextMixin,\n ],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-display-value',\n },\n },\n initialState: {\n activeSubscription: null,\n removeActiveSubscription: null,\n },\n created(): void {\n // Set route active at initialization\n const route = document.querySelector('solid-route[active]') as any;\n if (!route) return;\n setTimeout(() => {\n if (route['resourceId'] === this.resourceId) this.addActiveCallback();\n });\n },\n detached(): void {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n if (this.removeActiveSubscription) PubSub.unsubscribe(this.removeActiveSubscription);\n },\n // Update subscription when id changes\n updateNavigateSubscription() {\n if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n\n if (this.resourceId) {\n this.activeSubscription = PubSub.subscribe(\n 'enterRoute.' + this.resourceId,\n this.addActiveCallback.bind(this)\n );\n }\n },\n addActiveCallback() {\n this.element.setAttribute('active', '');\n this.removeActiveSubscription = PubSub.subscribe(\n 'leaveRoute',\n this.removeActiveCallback.bind(this)\n );\n },\n removeActiveCallback() {\n this.element.removeAttribute('active');\n PubSub.unsubscribe(this.removeActiveSubscription);\n },\n get childTag(): string {\n return this.element.dataset.child || this.element.tagName;\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n // Here \"even.target\" points to the content of the widgets of the children of solid-display\n dispatchSelect(event: Event, resourceId: string): void {\n const linkTarget = (event!.target as Element).closest('a');\n if (linkTarget && linkTarget.hasAttribute('href')) return;\n const resource = { \"@id\": resourceId };\n this.element.dispatchEvent(\n new CustomEvent('resourceSelect', { detail: { resource: resource } }),\n );\n this.goToNext(resource);\n },\n \n enterKeydownAction (event, resourceId: string): void {\n if (event.keyCode === 13) {\n const resource = { \"@id\" : resourceId };\n this.goToNext(resource);\n }\n },\n /**\n * Returns template of a child element (resource)\n * @param resourceId\n * @param attributes\n */\n getChildTemplate(resourceId: string, attributes: object) {\n let template = html`\n <solid-display\n data-src=${resourceId}\n @click=${(event: Event) => this.dispatchSelect(event, resourceId)}\n @keydown=${(event: Event) => this.enterKeydownAction(event, resourceId)}\n fields=${ifDefined(this.fields)}\n ...=${spread(attributes)}\n ></solid-display>\n `\n return template;\n },\n\n /**\n * Creates and render the content of a single element (resource)\n * @param parent\n */\n async appendSingleElt(parent: HTMLElement): Promise<void> {\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all( // generate all widget templates\n fields.map((field: string) => this.createWidgetTemplate(field))\n );\n render(html`${widgetTemplates}`, parent);\n },\n\n /**\n * @override listMixin method to use litHtml\n *\n * Render resources from a container\n * @param resources\n * @param listPostProcessors\n * @param div\n * @param context\n */\n async renderDOM(\n resources: object[],\n listPostProcessors: Function[],\n div: HTMLElement,\n context: string,\n ) {\n const attributes = this.getChildAttributes(); // get attributes of children only once\n // and create a child template for each resource\n const template = html`${resources.map(r => r ? this.getChildTemplate(r['@id'], attributes) : null)}`;\n render(template, div);\n\n const nextProcessor = listPostProcessors.shift();\n if (nextProcessor)\n await nextProcessor(\n resources,\n listPostProcessors,\n div,\n context\n );\n },\n\n /**\n * Get attributes to dispatch to children from current element\n */\n getChildAttributes() {\n const attributes:{[key:string]: string} = {};\n for (let attr of this.element.attributes) {\n //copy widget and value attributes\n if (\n attr.name.startsWith('value-') ||\n attr.name.startsWith('label-') ||\n attr.name.startsWith('placeholder-') ||\n attr.name.startsWith('widget-') ||\n attr.name.startsWith('class-') ||\n attr.name.startsWith('multiple-') ||\n attr.name.startsWith('editable-') ||\n attr.name.startsWith('action-') ||\n attr.name.startsWith('default-') ||\n attr.name.startsWith('link-text-') ||\n attr.name == 'extra-context'\n )\n attributes[attr.name] = attr.value;\n if (attr.name.startsWith('child-'))\n attributes[attr.name.replace(/^child-/, '')] = attr.value;\n if (attr.name == 'next') {\n attributes['role'] = 'button';\n attributes['tabindex'] = '0';\n }\n }\n return attributes;\n }\n};\n\nSib.register(SolidDisplay);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["solid-form-search.ts"],"names":["Sib","WidgetMixin","AttributeBinderMixin","ContextMixin","newWidgetFactory","html","render","ifDefined","uniqID","SolidFormSearch","name","use","attributes","defaultWidget","type","String","default","submitButton","callback","newValue","oldValue","noRender","populate","submitWidget","undefined","classSubmitButton","value","initialState","error","created","element","closest","autoRangeValues","rangeId","attachedElements","Set","defaultMultipleWidget","defaultSetWidget","values","widgets","forEach","widget","component","getValue","JSON","parse","list","multiple","getWidget","field","isSet","tagName","hasAttribute","idField","setAttribute","widgetAttribute","getAttribute","customElements","get","startsWith","widgetFromTagName","attach","elm","has","add","updateAutoRanges","detach","delete","attr","replace","getValuesOfField","id","ldpContains","Array","from","map","data","context","sibStore","setLocalData","change","resource","dispatchEvent","CustomEvent","bubbles","detail","inputChange","getSubmitTemplate","empty","replaceAttributesData","addEventListener","e","preventDefault","fields","getFields","widgetTemplates","Promise","all","createWidgetTemplate","template","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { AttributeBinderMixin } from '../mixins/attributeBinderMixin';\nimport { ContextMixin } from '../mixins/contextMixin';\nimport type { WidgetInterface } from '../mixins/interfaces';\nimport { newWidgetFactory } from '../new-widgets/new-widget-factory';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { uniqID } from '../libs/helpers';\n\nexport const SolidFormSearch = {\n name: 'solid-form-search',\n use: [WidgetMixin, AttributeBinderMixin, ContextMixin],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-form-label-text',\n },\n submitButton: {\n type: String,\n default: null,\n callback: function (newValue: string, oldValue: string) {\n if (this.noRender == null && newValue !== oldValue) this.populate();\n },\n },\n submitWidget: {\n type: String,\n default: undefined\n },\n classSubmitButton: {\n type: String,\n default: undefined,\n },\n noRender: {\n type: String,\n default: null,\n callback: function (value: boolean) {\n if (value === null) this.populate()\n }\n },\n },\n initialState: {\n error: '',\n },\n created() {\n if (this.element.closest('[no-render]')) this.noRender = ''; // if embedded in no-render, apply no-render to himself\n this.autoRangeValues = {};\n this.rangeId = uniqID();\n this.attachedElements = new Set();\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple-form';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n\n get value(): object {\n const values = {};\n this.widgets.forEach((widget) => {\n const name = (widget.component || widget).name;\n if (name == null) return;\n let value = widget.component ? widget.component.getValue() : widget.value;\n try {\n value = JSON.parse(value);\n } catch {}\n value = {\n type: widget.component.type,\n list: !!widget.component.multiple,\n value: value,\n }\n values[name] = value;\n });\n return values;\n },\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n let tagName = '';\n // If auto-range-[field] exists, create range-[field] and sets its value\n if(this.element.hasAttribute('auto-range-' + field) && !this.element.hasAttribute('range-' + field)) {\n const idField = `${this.rangeId}_${field}`;\n this.element.setAttribute('range-' + field, 'store://local.' + idField);\n this.populate();\n }\n \n const widgetAttribute = this.element.getAttribute('widget-' + field);\n // Choose widget\n if (!widgetAttribute && (this.element.hasAttribute('range-' + field) || this.element.hasAttribute('enum-' + field))) {\n tagName = 'solid-form-dropdown'\n } else {\n tagName = widgetAttribute || (!isSet ? this.defaultWidget : this.defaultSetWidget);\n }\n // Create widget\n if (!customElements.get(tagName)) { // component does not exist\n if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it\n }\n\n return this.widgetFromTagName(tagName);\n },\n async attach(elm: any) {\n if(this.attachedElements.has(elm)) return;\n this.attachedElements.add(elm);\n await this.updateAutoRanges();\n },\n async detach(elm: any) {\n if(!this.attachedElements.has(elm)) return;\n this.attachedElements.delete(elm);\n await this.updateAutoRanges();\n },\n async updateAutoRanges() {\n for(const attr of (this.element as Element).attributes) {\n if(!attr['name'].startsWith('auto-range-')) continue;\n const field = attr['name'].replace('auto-range-', '');\n const autoRangeValues = new Set();\n for(const elm of this.attachedElements) {\n for(const value of await elm.getValuesOfField(field)) {\n autoRangeValues.add(value);\n }\n }\n const idField = `${this.rangeId}_${field}`;\n const id = `store://local.${idField}`;\n const ldpContains = Array.from(autoRangeValues).map(id => ({'@id' : id}));\n const data = {\n \"@type\": \"ldp:Container\",\n \"@context\": this.context,\n \"ldp:contains\" : ldpContains,\n };\n sibStore.setLocalData(data, id);\n }\n },\n change(resource: object): void {\n this.element.dispatchEvent(\n new CustomEvent('formChange', {\n bubbles: true,\n detail: { resource },\n }),\n );\n },\n async inputChange(): Promise<void> {\n this.change(this.value);\n },\n getSubmitTemplate() {\n return html`\n <div class=${ifDefined(this.classSubmitButton)}>\n ${this.submitWidget === 'button' ? html`\n <button type=\"submit\">${this.submitButton || ''}</button>\n ` : html`\n <input type=\"submit\" value=${ifDefined(this.submitButton || undefined)}>\n `}\n </div>\n ` \n },\n empty(): void {},\n async populate(): Promise<void> {\n await this.replaceAttributesData();\n if(this.submitButton == null) {\n this.element.addEventListener('input', () => this.inputChange());\n } else {\n this.element.addEventListener('submit', (e: Event) => {\n e.preventDefault();\n this.inputChange();\n });\n }\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all(fields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`\n <form>\n ${widgetTemplates}\n ${this.submitButton == null ? '' : this.getSubmitTemplate()}\n </form>\n `;\n render(template, this.element);\n }\n};\n\nSib.register(SolidFormSearch);"]}
|
|
1
|
+
{"version":3,"sources":["solid-form-search.ts"],"names":["Sib","WidgetMixin","AttributeBinderMixin","ContextMixin","newWidgetFactory","html","render","ifDefined","uniqID","SolidFormSearch","name","use","attributes","defaultWidget","type","String","default","submitButton","callback","newValue","oldValue","noRender","populate","submitWidget","undefined","classSubmitButton","value","initialState","error","created","element","closest","autoRangeValues","rangeId","attachedElements","Set","defaultMultipleWidget","defaultSetWidget","values","widgets","forEach","widget","component","getValue","JSON","parse","list","multiple","getWidget","field","isSet","tagName","hasAttribute","idField","setAttribute","widgetAttribute","getAttribute","customElements","get","startsWith","widgetFromTagName","attach","elm","has","add","updateAutoRanges","detach","delete","attr","replace","getValuesOfField","id","ldpContains","Array","from","map","data","context","sibStore","setLocalData","change","resource","dispatchEvent","CustomEvent","bubbles","detail","inputChange","getSubmitTemplate","empty","replaceAttributesData","addEventListener","e","preventDefault","fields","getFields","widgetTemplates","Promise","all","createWidgetTemplate","template","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { AttributeBinderMixin } from '../mixins/attributeBinderMixin';\nimport { ContextMixin } from '../mixins/contextMixin';\nimport type { WidgetInterface } from '../mixins/interfaces';\nimport { newWidgetFactory } from '../new-widgets/new-widget-factory';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { uniqID } from '../libs/helpers';\nimport type { SearchQuery } from '../libs/interfaces';\n\nexport const SolidFormSearch = {\n name: 'solid-form-search',\n use: [WidgetMixin, AttributeBinderMixin, ContextMixin],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-form-label-text',\n },\n submitButton: {\n type: String,\n default: null,\n callback: function (newValue: string, oldValue: string) {\n if (this.noRender == null && newValue !== oldValue) this.populate();\n },\n },\n submitWidget: {\n type: String,\n default: undefined\n },\n classSubmitButton: {\n type: String,\n default: undefined,\n },\n noRender: {\n type: String,\n default: null,\n callback: function (value: boolean) {\n if (value === null) this.populate()\n }\n },\n },\n initialState: {\n error: '',\n },\n created() {\n if (this.element.closest('[no-render]')) this.noRender = ''; // if embedded in no-render, apply no-render to himself\n this.autoRangeValues = {};\n this.rangeId = uniqID();\n this.attachedElements = new Set();\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple-form';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n\n get value(): SearchQuery {\n const values: SearchQuery = {};\n this.widgets.forEach((widget) => {\n const name = (widget.component || widget).name;\n if (name == null) return;\n let value = widget.component ? widget.component.getValue() : widget.value;\n try {\n value = JSON.parse(value);\n } catch {}\n value = {\n type: widget.component.type,\n list: !!widget.component.multiple,\n value: value,\n }\n values[name] = value;\n });\n return values;\n },\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n let tagName = '';\n // If auto-range-[field] exists, create range-[field] and sets its value\n if(this.element.hasAttribute('auto-range-' + field) && !this.element.hasAttribute('range-' + field)) {\n const idField = `${this.rangeId}_${field}`;\n this.element.setAttribute('range-' + field, 'store://local.' + idField);\n this.populate();\n }\n \n const widgetAttribute = this.element.getAttribute('widget-' + field);\n // Choose widget\n if (!widgetAttribute && (this.element.hasAttribute('range-' + field) || this.element.hasAttribute('enum-' + field))) {\n tagName = 'solid-form-dropdown'\n } else {\n tagName = widgetAttribute || (!isSet ? this.defaultWidget : this.defaultSetWidget);\n }\n // Create widget\n if (!customElements.get(tagName)) { // component does not exist\n if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it\n }\n\n return this.widgetFromTagName(tagName);\n },\n async attach(elm: any) {\n if(this.attachedElements.has(elm)) return;\n this.attachedElements.add(elm);\n await this.updateAutoRanges();\n },\n async detach(elm: any) {\n if(!this.attachedElements.has(elm)) return;\n this.attachedElements.delete(elm);\n await this.updateAutoRanges();\n },\n async updateAutoRanges() {\n for(const attr of (this.element as Element).attributes) {\n if(!attr['name'].startsWith('auto-range-')) continue;\n const field = attr['name'].replace('auto-range-', '');\n const autoRangeValues = new Set();\n for(const elm of this.attachedElements) {\n for(const value of await elm.getValuesOfField(field)) {\n autoRangeValues.add(value);\n }\n }\n const idField = `${this.rangeId}_${field}`;\n const id = `store://local.${idField}`;\n const ldpContains = Array.from(autoRangeValues).map(id => ({'@id' : id}));\n const data = {\n \"@type\": \"ldp:Container\",\n \"@context\": this.context,\n \"ldp:contains\" : ldpContains,\n };\n sibStore.setLocalData(data, id);\n }\n },\n change(resource: object): void {\n this.element.dispatchEvent(\n new CustomEvent('formChange', {\n bubbles: true,\n detail: { resource },\n }),\n );\n },\n async inputChange(): Promise<void> {\n this.change(this.value);\n },\n getSubmitTemplate() {\n return html`\n <div class=${ifDefined(this.classSubmitButton)}>\n ${this.submitWidget === 'button' ? html`\n <button type=\"submit\">${this.submitButton || ''}</button>\n ` : html`\n <input type=\"submit\" value=${ifDefined(this.submitButton || undefined)}>\n `}\n </div>\n ` \n },\n empty(): void {},\n async populate(): Promise<void> {\n await this.replaceAttributesData();\n if(this.submitButton == null) {\n this.element.addEventListener('input', () => this.inputChange());\n } else {\n this.element.addEventListener('submit', (e: Event) => {\n e.preventDefault();\n this.inputChange();\n });\n }\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all(fields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`\n <form>\n ${widgetTemplates}\n ${this.submitButton == null ? '' : this.getSubmitTemplate()}\n </form>\n `;\n render(template, this.element);\n }\n};\n\nSib.register(SolidFormSearch);"]}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { parseFieldsString, findClosingBracketMatchIndex, compare, uniqID } from "./helpers.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check if the field is a set
|
|
5
|
+
* @param field - field to test
|
|
6
|
+
* @param fields - list of fields
|
|
7
|
+
* @returns true if the field is a set, false otherwise
|
|
8
|
+
*/
|
|
9
|
+
const isSet = (field, fields) => {
|
|
10
|
+
if (!fields) return false;
|
|
11
|
+
let foundSets = fields.match(getSetRegexp(field));
|
|
12
|
+
return foundSets ? foundSets.length > 0 : false;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Get the list of fields in the set
|
|
16
|
+
* @param field - set name to get
|
|
17
|
+
* @param fields - list of fields
|
|
18
|
+
* @returns a list of fields in the set
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const getSet = (field, fields) => {
|
|
23
|
+
const setString = fields.match(getSetRegexp(field));
|
|
24
|
+
if (!setString) return [];
|
|
25
|
+
const firstSetBracket = fields.indexOf(setString[0]) + setString[0].length - 1;
|
|
26
|
+
const lastSetBracket = findClosingBracketMatchIndex(fields, firstSetBracket);
|
|
27
|
+
const set = fields.substring(firstSetBracket + 1, lastSetBracket);
|
|
28
|
+
return parseFieldsString(set);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const getSetRegexp = field => {
|
|
32
|
+
return new RegExp("(^|\\,|\\(|\\s)\\s*".concat(field, "\\s*\\("), 'g');
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Check if the field is a special search field
|
|
36
|
+
* @param field - field to test
|
|
37
|
+
* @param searchForm - current search form
|
|
38
|
+
* @returns true if the field is a special search field
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
const isSearchField = (field, searchForm) => {
|
|
43
|
+
return searchForm.hasAttribute('search-' + field);
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Get the fields targetted by a search field
|
|
47
|
+
* @param field - search field to get
|
|
48
|
+
* @param searchForm - current search form
|
|
49
|
+
* @returns a list of fields targetted by the current search field
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
const getSearchField = (field, searchForm) => {
|
|
54
|
+
return parseFieldsString(searchForm.getAttribute('search-' + field));
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Throw or simply return value
|
|
58
|
+
* @param throwOn - should throw on True or False
|
|
59
|
+
* @param ret - value to return
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
const orThrow = (throwOn, ret) => {
|
|
65
|
+
if (throwOn === true && ret) throw true;
|
|
66
|
+
if (throwOn === false && !ret) throw false;
|
|
67
|
+
return ret;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Compare a value to the query
|
|
71
|
+
* @param val - value to compare
|
|
72
|
+
* @param query - object to know how and what value to compare
|
|
73
|
+
* @param throwOn - should function throw error on True or False
|
|
74
|
+
* @returns true if value matches, throw error otherwise
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
const matchValue = async (val, query, throwOn) => {
|
|
79
|
+
var _subject$isContainer;
|
|
80
|
+
|
|
81
|
+
const subject = await val;
|
|
82
|
+
if (subject == null && query.value === '') return orThrow(throwOn, true); // filter not set and subject not existing -> ignore filter
|
|
83
|
+
|
|
84
|
+
if (subject == null) return orThrow(throwOn, false); // return false; // property does not exist on resource
|
|
85
|
+
|
|
86
|
+
if (query.list) {
|
|
87
|
+
// Filter on a container
|
|
88
|
+
if (query.value.length === 0) return orThrow(throwOn, true);
|
|
89
|
+
|
|
90
|
+
for (const v of query.value) {
|
|
91
|
+
if (await matchValue(subject, {
|
|
92
|
+
type: query.type,
|
|
93
|
+
value: v,
|
|
94
|
+
list: false
|
|
95
|
+
})) {
|
|
96
|
+
// do not throw here, we need the result
|
|
97
|
+
return orThrow(throwOn, true);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return orThrow(throwOn, false);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if ((_subject$isContainer = subject.isContainer) !== null && _subject$isContainer !== void 0 && _subject$isContainer.call(subject)) {
|
|
105
|
+
let ret = Promise.resolve(query.value === ''); // if no query, return a match
|
|
106
|
+
|
|
107
|
+
for (const value of subject['ldp:contains']) {
|
|
108
|
+
ret = (await ret) || (await matchValue(value, query)); // do not throw here, we need the result
|
|
109
|
+
|
|
110
|
+
if (ret) return orThrow(throwOn, true);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return orThrow(throwOn, await ret);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return orThrow(throwOn, compare[query.type](subject, query.value));
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Cache properties of a filter to avoid repeated parsing
|
|
120
|
+
* @param cacheKey - uniq key
|
|
121
|
+
* @param filter - filter to check
|
|
122
|
+
* @param fields - fields attribute of the element
|
|
123
|
+
* @param searchForm - current search form
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
const cacheFieldsProps = (cacheKey, filter, fields, searchForm) => {
|
|
128
|
+
if (!window.cachePropsSearchFilter[cacheKey]) {
|
|
129
|
+
window.cachePropsSearchFilter[cacheKey] = {
|
|
130
|
+
setFields: isSet(filter, fields) ? getSet(filter, fields) : null,
|
|
131
|
+
setSearchFields: isSearchField(filter, searchForm) ? getSearchField(filter, searchForm) : null
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Check if one resource match one filter
|
|
137
|
+
* @param resource - resource to test
|
|
138
|
+
* @param filter - name of the property tested
|
|
139
|
+
* @param query - query object to know how to compare values
|
|
140
|
+
* @param fields - fields attribute of the element
|
|
141
|
+
* @param searchForm - searchForm component
|
|
142
|
+
* @param filterId - uniqId used to fill the cache
|
|
143
|
+
* @param throwOn - should function throw error on True or False
|
|
144
|
+
* @returns return true if the resource matches the filter, throw error otherwise
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
const matchFilter = async (resource, filter, query, fieldsAttr, searchForm, filterId, throwOn) => {
|
|
149
|
+
let fields = null;
|
|
150
|
+
const cacheKey = "".concat(filter, "_").concat(filterId);
|
|
151
|
+
cacheFieldsProps(cacheKey, filter, fieldsAttr, searchForm);
|
|
152
|
+
|
|
153
|
+
if (window.cachePropsSearchFilter[cacheKey].setFields !== null) {
|
|
154
|
+
fields = window.cachePropsSearchFilter[cacheKey].setFields;
|
|
155
|
+
} else if (window.cachePropsSearchFilter[cacheKey].setSearchFields !== null) {
|
|
156
|
+
fields = window.cachePropsSearchFilter[cacheKey].setSearchFields;
|
|
157
|
+
} else {
|
|
158
|
+
// search on 1 field
|
|
159
|
+
return matchValue(resource[filter], query, throwOn);
|
|
160
|
+
} // search on multiple fields
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
try {
|
|
164
|
+
await Promise.all((fields || []).map(field => matchFilter(resource, field, query, fieldsAttr, searchForm, filterId, true // stop searching when 1 filter is true (= OR)
|
|
165
|
+
)));
|
|
166
|
+
} catch (e) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
throw false;
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Check if one resource match all the filters
|
|
174
|
+
* @param resource - resource to test
|
|
175
|
+
* @param filters - current filters
|
|
176
|
+
* @param filterNames - names of the filters
|
|
177
|
+
* @param fields - fields attribute of the element
|
|
178
|
+
* @param searchForm - searchForm component
|
|
179
|
+
* @param filterId - uniqId used to fill the cache
|
|
180
|
+
* @returns true if resource match, false otherwise
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
const matchFilters = async (resource, filters, filterNames, fields, searchForm, filterId) => {
|
|
185
|
+
// return true if all filters values are contained in the corresponding field of the resource
|
|
186
|
+
try {
|
|
187
|
+
await Promise.all(filterNames.map(filter => matchFilter(resource, filter, filters[filter], fields, searchForm, filterId, false // stop searching when 1 filter is false (= AND)
|
|
188
|
+
)));
|
|
189
|
+
} catch (e) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return true;
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Check which resources match the filters
|
|
197
|
+
* @param resources - list of resources to filter
|
|
198
|
+
* @param filters - current filters
|
|
199
|
+
* @param fields - fields attribute of the element
|
|
200
|
+
* @param searchForm - searchForm component
|
|
201
|
+
* @returns resources filtered
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
const searchInResources = async (resources, filters, fields, searchForm) => {
|
|
206
|
+
// Optim: use cache to do these things only once
|
|
207
|
+
const filterNames = Object.keys(filters);
|
|
208
|
+
const filterId = uniqID();
|
|
209
|
+
window.cachePropsSearchFilter = {};
|
|
210
|
+
return Promise.all(resources.map(resource => matchFilters(resource, filters, filterNames, fields, searchForm, filterId)));
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export { searchInResources };
|
|
214
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["filter.ts"],"names":["parseFieldsString","findClosingBracketMatchIndex","compare","uniqID","isSet","field","fields","foundSets","match","getSetRegexp","length","getSet","setString","firstSetBracket","indexOf","lastSetBracket","set","substring","RegExp","isSearchField","searchForm","hasAttribute","getSearchField","getAttribute","orThrow","throwOn","ret","matchValue","val","query","subject","value","list","v","type","isContainer","Promise","resolve","cacheFieldsProps","cacheKey","filter","window","cachePropsSearchFilter","setFields","setSearchFields","matchFilter","resource","fieldsAttr","filterId","all","map","e","matchFilters","filters","filterNames","searchInResources","resources","Object","keys"],"mappings":"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","sourcesContent":["import { parseFieldsString, findClosingBracketMatchIndex, compare, uniqID } from \"./helpers\";\nimport type { Query, SearchQuery } from \"./interfaces\";\n\n/**\n * Check if the field is a set\n * @param field - field to test\n * @param fields - list of fields\n * @returns true if the field is a set, false otherwise\n */\nconst isSet = (field: string, fields: string): boolean => {\n if (!fields) return false;\n let foundSets = fields.match(getSetRegexp(field));\n return foundSets ? foundSets.length > 0 : false;\n}\n/**\n * Get the list of fields in the set\n * @param field - set name to get\n * @param fields - list of fields\n * @returns a list of fields in the set\n */\nconst getSet = (field: string, fields: string): string[] => {\n const setString = fields.match(getSetRegexp(field));\n if (!setString) return [];\n const firstSetBracket = fields.indexOf(setString[0]) + (setString[0].length) - 1;\n const lastSetBracket = findClosingBracketMatchIndex(fields, firstSetBracket);\n const set = fields.substring(firstSetBracket + 1, lastSetBracket);\n return parseFieldsString(set);\n}\nconst getSetRegexp = (field: string) => {\n return new RegExp(`(^|\\\\,|\\\\(|\\\\s)\\\\s*${field}\\\\s*\\\\(`, 'g')\n}\n/**\n * Check if the field is a special search field\n * @param field - field to test\n * @param searchForm - current search form\n * @returns true if the field is a special search field\n */\nconst isSearchField = (field: string, searchForm: any) => {\n return searchForm.hasAttribute('search-' + field);\n}\n/**\n * Get the fields targetted by a search field\n * @param field - search field to get\n * @param searchForm - current search form\n * @returns a list of fields targetted by the current search field\n */\nconst getSearchField = (field: string, searchForm: any): string[] => {\n return parseFieldsString(searchForm.getAttribute('search-' + field));\n}\n\n/**\n * Throw or simply return value\n * @param throwOn - should throw on True or False\n * @param ret - value to return\n * @returns\n */\nconst orThrow = (throwOn: boolean | undefined, ret: boolean) => {\n if (throwOn === true && ret) throw true;\n if (throwOn === false && !ret) throw false;\n return ret;\n}\n\n/**\n * Compare a value to the query\n * @param val - value to compare\n * @param query - object to know how and what value to compare\n * @param throwOn - should function throw error on True or False\n * @returns true if value matches, throw error otherwise\n */\nconst matchValue = async (val: any, query: Query, throwOn?: boolean): Promise<boolean> => {\n const subject = await val;\n if (subject == null && query.value === '') return orThrow(throwOn, true); // filter not set and subject not existing -> ignore filter\n if (subject == null) return orThrow(throwOn, false); // return false; // property does not exist on resource\n if (query.list) { // Filter on a container\n if(query.value.length === 0) return orThrow(throwOn, true);\n for(const v of query.value) {\n if (await matchValue(subject, { type: query.type, value: v, list: false })) { // do not throw here, we need the result\n return orThrow(throwOn, true);\n }\n }\n return orThrow(throwOn, false);\n }\n if (subject.isContainer?.()) {\n let ret: any = Promise.resolve(query.value === ''); // if no query, return a match\n for (const value of subject['ldp:contains']) {\n ret = await ret || await matchValue(value, query); // do not throw here, we need the result\n if (ret) return orThrow(throwOn, true);\n }\n return orThrow(throwOn, await ret);\n }\n\n return orThrow(throwOn, compare[query.type](subject, query.value));\n}\n\n/**\n * Cache properties of a filter to avoid repeated parsing\n * @param cacheKey - uniq key\n * @param filter - filter to check\n * @param fields - fields attribute of the element\n * @param searchForm - current search form\n */\nconst cacheFieldsProps = (\n cacheKey: string,\n filter: string,\n fields: string,\n searchForm: any\n) => {\n if (!window.cachePropsSearchFilter[cacheKey]) {\n window.cachePropsSearchFilter[cacheKey] = {\n setFields: isSet(filter, fields) ? getSet(filter, fields) : null,\n setSearchFields: isSearchField(filter, searchForm) ? getSearchField(filter, searchForm) : null\n }\n }\n}\n\n/**\n * Check if one resource match one filter\n * @param resource - resource to test\n * @param filter - name of the property tested\n * @param query - query object to know how to compare values\n * @param fields - fields attribute of the element\n * @param searchForm - searchForm component\n * @param filterId - uniqId used to fill the cache\n * @param throwOn - should function throw error on True or False\n * @returns return true if the resource matches the filter, throw error otherwise\n */\nconst matchFilter = async (\n resource: object,\n filter: string,\n query: Query,\n fieldsAttr: string,\n searchForm: any,\n filterId: string,\n throwOn: boolean\n) => {\n let fields: string[] | null = null;\n\n const cacheKey = `${filter}_${filterId}`;\n cacheFieldsProps(cacheKey, filter, fieldsAttr, searchForm);\n\n if (window.cachePropsSearchFilter[cacheKey].setFields !== null) {\n fields = window.cachePropsSearchFilter[cacheKey].setFields;\n } else if (window.cachePropsSearchFilter[cacheKey].setSearchFields !== null) {\n fields = window.cachePropsSearchFilter[cacheKey].setSearchFields;\n } else { // search on 1 field\n return matchValue(resource[filter], query, throwOn);\n }\n\n // search on multiple fields\n try {\n await Promise.all((fields || []).map(field =>\n matchFilter(\n resource,\n field,\n query,\n fieldsAttr,\n searchForm,\n filterId,\n true // stop searching when 1 filter is true (= OR)\n )\n ))\n } catch (e) { return true }\n throw false;\n}\n\n/**\n * Check if one resource match all the filters\n * @param resource - resource to test\n * @param filters - current filters\n * @param filterNames - names of the filters\n * @param fields - fields attribute of the element\n * @param searchForm - searchForm component\n * @param filterId - uniqId used to fill the cache\n * @returns true if resource match, false otherwise\n */\nconst matchFilters = async (\n resource: object,\n filters: SearchQuery,\n filterNames: string[],\n fields: string,\n searchForm: any,\n filterId: string\n): Promise<boolean> => {\n // return true if all filters values are contained in the corresponding field of the resource\n try {\n await Promise.all(filterNames.map(filter =>\n matchFilter(\n resource,\n filter,\n filters[filter],\n fields,\n searchForm,\n filterId,\n false // stop searching when 1 filter is false (= AND)\n )\n ));\n } catch (e) { return false }\n return true;\n}\n\n/**\n * Check which resources match the filters\n * @param resources - list of resources to filter\n * @param filters - current filters\n * @param fields - fields attribute of the element\n * @param searchForm - searchForm component\n * @returns resources filtered\n */\nconst searchInResources = async (\n resources: object[],\n filters: SearchQuery,\n fields: string,\n searchForm: any\n) => {\n // Optim: use cache to do these things only once\n const filterNames = Object.keys(filters);\n const filterId = uniqID();\n window.cachePropsSearchFilter = {};\n\n return Promise.all(resources.map(resource =>\n matchFilters(\n resource,\n filters,\n filterNames,\n fields,\n searchForm,\n filterId\n )\n ));\n}\n\nexport {\n searchInResources\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["interfaces.ts"],"names":[],"mappings":"AAKC;AAUA;AA8BA;AAsBA;AAIA","sourcesContent":["export interface AccessorStaticInterface {\n [key: string]: {\n get: Function;\n set: Function;\n }\n};\n\nexport interface ArrayOfHooksInterface {\n created: HookInterface[];\n attached: HookInterface[];\n detached: HookInterface[];\n}\n\nexport interface AttributeChangedCallbackInterface {\n (newValue: any, oldValue: any): void;\n};\n\nexport interface AttributeDefinitionInterface {\n type?: any;\n default?: any;\n required?: boolean;\n callback?: AttributeChangedCallbackInterface;\n}\n\nexport interface AttributesDefinitionInterface {\n [key: string]: AttributeDefinitionInterface;\n}\n\nexport type ComponentConstructorInterface = new (element: HTMLElement) => ComponentInterface;\n\nexport interface ComponentInterface {\n element: HTMLElement;\n created():void;\n attached():void;\n detached():void;\n\n attributesCallback(key: string, value: any, oldValue: any):void;\n}\n\nexport interface ComponentStaticInterface extends HasAttributesDefinitionInterface, HasInitialStateInterface {\n name: String;\n\n hooks: ArrayOfHooksInterface;\n methods: Map<string, Function>;\n accessors: AccessorStaticInterface;\n};\n\nexport interface HasAttributesDefinitionInterface {\n attributes?: AttributesDefinitionInterface | undefined;\n}\n\nexport interface HasHooksInterface {\n created?: HookInterface;\n attached?: HookInterface;\n detached?: HookInterface;\n}\n\nexport interface HasInitialStateInterface {\n initialState?: object | undefined;\n}\n\nexport interface HasMixinsInterface {\n use?: MixinStaticInterface[] | undefined;\n}\n\nexport interface HookInterface {\n (): void;\n};\n\nexport interface MixinStaticInterface extends HasAttributesDefinitionInterface, HasMixinsInterface, HasInitialStateInterface, HasHooksInterface {\n name: String;\n};\n\nexport interface LocationResourceInterface {\n lat?: HookInterface;\n lng?: HookInterface;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["interfaces.ts"],"names":[],"mappings":"AAKC;AAUA;AA8BA;AAsBA;AAIA","sourcesContent":["export interface AccessorStaticInterface {\n [key: string]: {\n get: Function;\n set: Function;\n }\n};\n\nexport interface ArrayOfHooksInterface {\n created: HookInterface[];\n attached: HookInterface[];\n detached: HookInterface[];\n}\n\nexport interface AttributeChangedCallbackInterface {\n (newValue: any, oldValue: any): void;\n};\n\nexport interface AttributeDefinitionInterface {\n type?: any;\n default?: any;\n required?: boolean;\n callback?: AttributeChangedCallbackInterface;\n}\n\nexport interface AttributesDefinitionInterface {\n [key: string]: AttributeDefinitionInterface;\n}\n\nexport type ComponentConstructorInterface = new (element: HTMLElement) => ComponentInterface;\n\nexport interface ComponentInterface {\n element: HTMLElement;\n created():void;\n attached():void;\n detached():void;\n\n attributesCallback(key: string, value: any, oldValue: any):void;\n}\n\nexport interface ComponentStaticInterface extends HasAttributesDefinitionInterface, HasInitialStateInterface {\n name: String;\n\n hooks: ArrayOfHooksInterface;\n methods: Map<string, Function>;\n accessors: AccessorStaticInterface;\n};\n\nexport interface HasAttributesDefinitionInterface {\n attributes?: AttributesDefinitionInterface | undefined;\n}\n\nexport interface HasHooksInterface {\n created?: HookInterface;\n attached?: HookInterface;\n detached?: HookInterface;\n}\n\nexport interface HasInitialStateInterface {\n initialState?: object | undefined;\n}\n\nexport interface HasMixinsInterface {\n use?: MixinStaticInterface[] | undefined;\n}\n\nexport interface HookInterface {\n (): void;\n};\n\nexport interface MixinStaticInterface extends HasAttributesDefinitionInterface, HasMixinsInterface, HasInitialStateInterface, HasHooksInterface {\n name: String;\n};\n\nexport interface LocationResourceInterface {\n lat?: HookInterface;\n lng?: HookInterface;\n}\nexport interface Query {\n value: any\n type: \"boolean\" | \"number\" | \"range\" | \"resource\" | \"string\";\n list: boolean\n}\n\nexport interface SearchQuery {\n [key: string]: Query\n}"]}
|