@memberjunction/ng-core-entity-forms 6.2.0-edge.6 → 6.2.0-edge.8

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.
Files changed (167) hide show
  1. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1 -1
  2. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  3. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +2 -2
  4. package/dist/lib/custom/Conversations/conversation-overview.panel.js +1 -1
  5. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  6. package/dist/lib/custom/DiagnosticSenderRegistrations/sender-registration-toolbar-actions.d.ts +35 -0
  7. package/dist/lib/custom/DiagnosticSenderRegistrations/sender-registration-toolbar-actions.d.ts.map +1 -0
  8. package/dist/lib/custom/DiagnosticSenderRegistrations/sender-registration-toolbar-actions.js +155 -0
  9. package/dist/lib/custom/DiagnosticSenderRegistrations/sender-registration-toolbar-actions.js.map +1 -0
  10. package/dist/lib/custom/Entities/entity-form.component.js +3 -3
  11. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  12. package/dist/lib/custom/Files/file-form.component.d.ts +8 -0
  13. package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -1
  14. package/dist/lib/custom/Files/file-form.component.js +21 -5
  15. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  16. package/dist/lib/custom/Files/file-form.logic.d.ts +7 -0
  17. package/dist/lib/custom/Files/file-form.logic.d.ts.map +1 -1
  18. package/dist/lib/custom/Files/file-form.logic.js +20 -0
  19. package/dist/lib/custom/Files/file-form.logic.js.map +1 -1
  20. package/dist/lib/custom/Lists/list-form.component.js +5 -5
  21. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  22. package/dist/lib/custom/Queries/query-child-labels.d.ts +12 -0
  23. package/dist/lib/custom/Queries/query-child-labels.d.ts.map +1 -0
  24. package/dist/lib/custom/Queries/query-child-labels.js +28 -0
  25. package/dist/lib/custom/Queries/query-child-labels.js.map +1 -0
  26. package/dist/lib/custom/Queries/query-fields-grid.component.d.ts +37 -0
  27. package/dist/lib/custom/Queries/query-fields-grid.component.d.ts.map +1 -0
  28. package/dist/lib/custom/Queries/query-fields-grid.component.js +321 -0
  29. package/dist/lib/custom/Queries/query-fields-grid.component.js.map +1 -0
  30. package/dist/lib/custom/Queries/query-form-logic.d.ts +37 -0
  31. package/dist/lib/custom/Queries/query-form-logic.d.ts.map +1 -0
  32. package/dist/lib/custom/Queries/query-form-logic.js +48 -0
  33. package/dist/lib/custom/Queries/query-form-logic.js.map +1 -0
  34. package/dist/lib/custom/Queries/query-form.component.d.ts +76 -7
  35. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  36. package/dist/lib/custom/Queries/query-form.component.js +740 -688
  37. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  38. package/dist/lib/custom/Queries/query-parameters-grid.component.d.ts +31 -0
  39. package/dist/lib/custom/Queries/query-parameters-grid.component.d.ts.map +1 -0
  40. package/dist/lib/custom/Queries/query-parameters-grid.component.js +298 -0
  41. package/dist/lib/custom/Queries/query-parameters-grid.component.js.map +1 -0
  42. package/dist/lib/custom/Rubrics/record-forms.component.js +2 -2
  43. package/dist/lib/custom/Rubrics/record-forms.component.js.map +1 -1
  44. package/dist/lib/custom/Rubrics/scale-form.component.d.ts.map +1 -1
  45. package/dist/lib/custom/Rubrics/scale-form.component.js +2 -1
  46. package/dist/lib/custom/Rubrics/scale-form.component.js.map +1 -1
  47. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +1 -1
  48. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  49. package/dist/lib/custom/custom-forms.module.d.ts +41 -35
  50. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  51. package/dist/lib/custom/custom-forms.module.js +36 -3
  52. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  53. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  54. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +234 -226
  55. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  56. package/dist/lib/generated/Entities/MJAIAgentConfiguration/mjaiagentconfiguration.form.component.d.ts.map +1 -1
  57. package/dist/lib/generated/Entities/MJAIAgentConfiguration/mjaiagentconfiguration.form.component.js +25 -6
  58. package/dist/lib/generated/Entities/MJAIAgentConfiguration/mjaiagentconfiguration.form.component.js.map +1 -1
  59. package/dist/lib/generated/Entities/MJAIAgentRelationship/mjaiagentrelationship.form.component.d.ts.map +1 -1
  60. package/dist/lib/generated/Entities/MJAIAgentRelationship/mjaiagentrelationship.form.component.js +13 -3
  61. package/dist/lib/generated/Entities/MJAIAgentRelationship/mjaiagentrelationship.form.component.js.map +1 -1
  62. package/dist/lib/generated/Entities/MJBrandKit/mjbrandkit.form.component.d.ts +10 -0
  63. package/dist/lib/generated/Entities/MJBrandKit/mjbrandkit.form.component.d.ts.map +1 -0
  64. package/dist/lib/generated/Entities/MJBrandKit/mjbrandkit.form.component.js +91 -0
  65. package/dist/lib/generated/Entities/MJBrandKit/mjbrandkit.form.component.js.map +1 -0
  66. package/dist/lib/generated/Entities/MJBrandKitAsset/mjbrandkitasset.form.component.d.ts +10 -0
  67. package/dist/lib/generated/Entities/MJBrandKitAsset/mjbrandkitasset.form.component.d.ts.map +1 -0
  68. package/dist/lib/generated/Entities/MJBrandKitAsset/mjbrandkitasset.form.component.js +72 -0
  69. package/dist/lib/generated/Entities/MJBrandKitAsset/mjbrandkitasset.form.component.js.map +1 -0
  70. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.d.ts.map +1 -1
  71. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js +82 -10
  72. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js.map +1 -1
  73. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.d.ts.map +1 -1
  74. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +39 -31
  75. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +90 -78
  77. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/MJDiagnosticBundle/mjdiagnosticbundle.form.component.d.ts +10 -0
  79. package/dist/lib/generated/Entities/MJDiagnosticBundle/mjdiagnosticbundle.form.component.d.ts.map +1 -0
  80. package/dist/lib/generated/Entities/MJDiagnosticBundle/mjdiagnosticbundle.form.component.js +154 -0
  81. package/dist/lib/generated/Entities/MJDiagnosticBundle/mjdiagnosticbundle.form.component.js.map +1 -0
  82. package/dist/lib/generated/Entities/MJDiagnosticSenderRegistration/mjdiagnosticsenderregistration.form.component.d.ts +10 -0
  83. package/dist/lib/generated/Entities/MJDiagnosticSenderRegistration/mjdiagnosticsenderregistration.form.component.d.ts.map +1 -0
  84. package/dist/lib/generated/Entities/MJDiagnosticSenderRegistration/mjdiagnosticsenderregistration.form.component.js +98 -0
  85. package/dist/lib/generated/Entities/MJDiagnosticSenderRegistration/mjdiagnosticsenderregistration.form.component.js.map +1 -0
  86. package/dist/lib/generated/Entities/MJDiagnosticSession/mjdiagnosticsession.form.component.d.ts +10 -0
  87. package/dist/lib/generated/Entities/MJDiagnosticSession/mjdiagnosticsession.form.component.d.ts.map +1 -0
  88. package/dist/lib/generated/Entities/MJDiagnosticSession/mjdiagnosticsession.form.component.js +149 -0
  89. package/dist/lib/generated/Entities/MJDiagnosticSession/mjdiagnosticsession.form.component.js.map +1 -0
  90. package/dist/lib/generated/Entities/MJDiagnosticSessionChunk/mjdiagnosticsessionchunk.form.component.d.ts +10 -0
  91. package/dist/lib/generated/Entities/MJDiagnosticSessionChunk/mjdiagnosticsessionchunk.form.component.d.ts.map +1 -0
  92. package/dist/lib/generated/Entities/MJDiagnosticSessionChunk/mjdiagnosticsessionchunk.form.component.js +88 -0
  93. package/dist/lib/generated/Entities/MJDiagnosticSessionChunk/mjdiagnosticsessionchunk.form.component.js.map +1 -0
  94. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  95. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +513 -451
  96. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  97. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
  98. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +24 -6
  99. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  100. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
  101. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +51 -15
  102. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  103. package/dist/lib/generated/Entities/MJGraph/mjgraph.form.component.d.ts +10 -0
  104. package/dist/lib/generated/Entities/MJGraph/mjgraph.form.component.d.ts.map +1 -0
  105. package/dist/lib/generated/Entities/MJGraph/mjgraph.form.component.js +155 -0
  106. package/dist/lib/generated/Entities/MJGraph/mjgraph.form.component.js.map +1 -0
  107. package/dist/lib/generated/Entities/MJGraphAuthorityTier/mjgraphauthoritytier.form.component.d.ts +10 -0
  108. package/dist/lib/generated/Entities/MJGraphAuthorityTier/mjgraphauthoritytier.form.component.d.ts.map +1 -0
  109. package/dist/lib/generated/Entities/MJGraphAuthorityTier/mjgraphauthoritytier.form.component.js +83 -0
  110. package/dist/lib/generated/Entities/MJGraphAuthorityTier/mjgraphauthoritytier.form.component.js.map +1 -0
  111. package/dist/lib/generated/Entities/MJGraphConcept/mjgraphconcept.form.component.d.ts +10 -0
  112. package/dist/lib/generated/Entities/MJGraphConcept/mjgraphconcept.form.component.d.ts.map +1 -0
  113. package/dist/lib/generated/Entities/MJGraphConcept/mjgraphconcept.form.component.js +91 -0
  114. package/dist/lib/generated/Entities/MJGraphConcept/mjgraphconcept.form.component.js.map +1 -0
  115. package/dist/lib/generated/Entities/MJGraphConceptType/mjgraphconcepttype.form.component.d.ts +10 -0
  116. package/dist/lib/generated/Entities/MJGraphConceptType/mjgraphconcepttype.form.component.d.ts.map +1 -0
  117. package/dist/lib/generated/Entities/MJGraphConceptType/mjgraphconcepttype.form.component.js +83 -0
  118. package/dist/lib/generated/Entities/MJGraphConceptType/mjgraphconcepttype.form.component.js.map +1 -0
  119. package/dist/lib/generated/Entities/MJGraphEdge/mjgraphedge.form.component.d.ts +10 -0
  120. package/dist/lib/generated/Entities/MJGraphEdge/mjgraphedge.form.component.d.ts.map +1 -0
  121. package/dist/lib/generated/Entities/MJGraphEdge/mjgraphedge.form.component.js +78 -0
  122. package/dist/lib/generated/Entities/MJGraphEdge/mjgraphedge.form.component.js.map +1 -0
  123. package/dist/lib/generated/Entities/MJGraphEdgeProvider/mjgraphedgeprovider.form.component.d.ts +10 -0
  124. package/dist/lib/generated/Entities/MJGraphEdgeProvider/mjgraphedgeprovider.form.component.d.ts.map +1 -0
  125. package/dist/lib/generated/Entities/MJGraphEdgeProvider/mjgraphedgeprovider.form.component.js +68 -0
  126. package/dist/lib/generated/Entities/MJGraphEdgeProvider/mjgraphedgeprovider.form.component.js.map +1 -0
  127. package/dist/lib/generated/Entities/MJGraphEdgeType/mjgraphedgetype.form.component.d.ts +10 -0
  128. package/dist/lib/generated/Entities/MJGraphEdgeType/mjgraphedgetype.form.component.d.ts.map +1 -0
  129. package/dist/lib/generated/Entities/MJGraphEdgeType/mjgraphedgetype.form.component.js +105 -0
  130. package/dist/lib/generated/Entities/MJGraphEdgeType/mjgraphedgetype.form.component.js.map +1 -0
  131. package/dist/lib/generated/Entities/MJGraphEdgeTypeEndpoint/mjgraphedgetypeendpoint.form.component.d.ts +10 -0
  132. package/dist/lib/generated/Entities/MJGraphEdgeTypeEndpoint/mjgraphedgetypeendpoint.form.component.d.ts.map +1 -0
  133. package/dist/lib/generated/Entities/MJGraphEdgeTypeEndpoint/mjgraphedgetypeendpoint.form.component.js +60 -0
  134. package/dist/lib/generated/Entities/MJGraphEdgeTypeEndpoint/mjgraphedgetypeendpoint.form.component.js.map +1 -0
  135. package/dist/lib/generated/Entities/MJGraphType/mjgraphtype.form.component.d.ts +10 -0
  136. package/dist/lib/generated/Entities/MJGraphType/mjgraphtype.form.component.d.ts.map +1 -0
  137. package/dist/lib/generated/Entities/MJGraphType/mjgraphtype.form.component.js +85 -0
  138. package/dist/lib/generated/Entities/MJGraphType/mjgraphtype.form.component.js.map +1 -0
  139. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +67 -61
  140. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.d.ts.map +1 -1
  142. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +15 -3
  143. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  145. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +207 -135
  146. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  147. package/dist/lib/generated/Entities/MJVideoArchetype/mjvideoarchetype.form.component.d.ts +10 -0
  148. package/dist/lib/generated/Entities/MJVideoArchetype/mjvideoarchetype.form.component.d.ts.map +1 -0
  149. package/dist/lib/generated/Entities/MJVideoArchetype/mjvideoarchetype.form.component.js +80 -0
  150. package/dist/lib/generated/Entities/MJVideoArchetype/mjvideoarchetype.form.component.js.map +1 -0
  151. package/dist/lib/generated/generated-forms.module.d.ts +478 -462
  152. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  153. package/dist/lib/generated/generated-forms.module.js +50 -2
  154. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  155. package/dist/lib/panels/brand-kits/brand-kit-assets.panel.d.ts +15 -0
  156. package/dist/lib/panels/brand-kits/brand-kit-assets.panel.d.ts.map +1 -0
  157. package/dist/lib/panels/brand-kits/brand-kit-assets.panel.js +52 -0
  158. package/dist/lib/panels/brand-kits/brand-kit-assets.panel.js.map +1 -0
  159. package/dist/lib/panels/brand-kits/brand-kit-generation-policy.panel.d.ts +15 -0
  160. package/dist/lib/panels/brand-kits/brand-kit-generation-policy.panel.d.ts.map +1 -0
  161. package/dist/lib/panels/brand-kits/brand-kit-generation-policy.panel.js +52 -0
  162. package/dist/lib/panels/brand-kits/brand-kit-generation-policy.panel.js.map +1 -0
  163. package/dist/public-api.d.ts +2 -0
  164. package/dist/public-api.d.ts.map +1 -1
  165. package/dist/public-api.js +3 -0
  166. package/dist/public-api.js.map +1 -1
  167. package/package.json +50 -48
@@ -0,0 +1,31 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import type { MJQueryParameterEntity } from '@memberjunction/core-entities';
3
+ import * as i0 from "@angular/core";
4
+ /** A parameter type a query author can choose. */
5
+ type ParameterType = MJQueryParameterEntity['Type'];
6
+ /**
7
+ * `<mj-query-parameters-grid>` — a query's parameters as a table.
8
+ *
9
+ * Which parameters exist is a fact of the SQL, so the name is read-only on a saved row (a row not
10
+ * saved yet declares it). Everything about a parameter that a person decides is an annotation and
11
+ * is editable in edit mode: type, required, default and sample values, whether only the server
12
+ * sets it, and the description. A parameter the SQL no longer uses is kept and flagged on the
13
+ * query (see its extraction message).
14
+ */
15
+ export declare class QueryParametersGridComponent {
16
+ Parameters: readonly MJQueryParameterEntity[];
17
+ EditMode: boolean;
18
+ /** The user asked to remove a parameter (it is removed when the query is saved). */
19
+ Remove: EventEmitter<MJQueryParameterEntity>;
20
+ /** An annotation changed, so the host can update its unsaved-changes state. */
21
+ Changed: EventEmitter<void>;
22
+ readonly Types: readonly ParameterType[];
23
+ DetectionLabel(parameter: MJQueryParameterEntity): string;
24
+ DetectionTitle(parameter: MJQueryParameterEntity): string;
25
+ TrackParameter(index: number, parameter: MJQueryParameterEntity): string;
26
+ OnAnnotationChange(): void;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<QueryParametersGridComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<QueryParametersGridComponent, "mj-query-parameters-grid", never, { "Parameters": { "alias": "Parameters"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; }, { "Remove": "Remove"; "Changed": "Changed"; }, never, never, true, never>;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=query-parameters-grid.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-parameters-grid.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Queries/query-parameters-grid.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,YAAY,EAAiB,MAAM,eAAe,CAAC;AAEhG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;;AAI5E,kDAAkD;AAClD,KAAK,aAAa,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAQa,4BAA4B;IAC5B,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAM;IACnD,QAAQ,UAAS;IAE1B,oFAAoF;IAC1E,MAAM,uCAA8C;IAC9D,+EAA+E;IACrE,OAAO,qBAA4B;IAE7C,SAAgB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAoD;IAE5F,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM;IAIzD,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM;IAIzD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,GAAG,MAAM;IAIxE,kBAAkB,IAAI,IAAI;yCAvBxB,4BAA4B;2CAA5B,4BAA4B;CA0BxC"}
@@ -0,0 +1,298 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { MJButtonDirective } from '@memberjunction/ng-ui-components';
4
+ import { DetectionMethodLabel, DetectionMethodTitle } from './query-child-labels';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ const _c0 = () => ({ standalone: true });
8
+ function QueryParametersGridComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
9
+ i0.ɵɵelementStart(0, "th", 3)(1, "span", 5);
10
+ i0.ɵɵtext(2, "Actions");
11
+ i0.ɵɵelementEnd()();
12
+ } }
13
+ function QueryParametersGridComponent_For_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
14
+ const _r1 = i0.ɵɵgetCurrentView();
15
+ i0.ɵɵelementStart(0, "input", 12);
16
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_2_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.Name, $event) || (param_r2.Name = $event); return i0.ɵɵresetView($event); });
17
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_2_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
18
+ i0.ɵɵelementEnd();
19
+ } if (rf & 2) {
20
+ const param_r2 = i0.ɵɵnextContext().$implicit;
21
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.Name);
22
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(2, _c0));
23
+ } }
24
+ function QueryParametersGridComponent_For_23_Conditional_3_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "code");
26
+ i0.ɵɵtext(1);
27
+ i0.ɵɵelementEnd();
28
+ } if (rf & 2) {
29
+ const param_r2 = i0.ɵɵnextContext().$implicit;
30
+ i0.ɵɵadvance();
31
+ i0.ɵɵtextInterpolate(param_r2.Name);
32
+ } }
33
+ function QueryParametersGridComponent_For_23_Conditional_4_For_3_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "option", 14);
35
+ i0.ɵɵtext(1);
36
+ i0.ɵɵelementEnd();
37
+ } if (rf & 2) {
38
+ const t_r5 = ctx.$implicit;
39
+ i0.ɵɵproperty("value", t_r5);
40
+ i0.ɵɵadvance();
41
+ i0.ɵɵtextInterpolate(t_r5);
42
+ } }
43
+ function QueryParametersGridComponent_For_23_Conditional_4_Template(rf, ctx) { if (rf & 1) {
44
+ const _r4 = i0.ɵɵgetCurrentView();
45
+ i0.ɵɵelementStart(0, "td")(1, "select", 13);
46
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.Type, $event) || (param_r2.Type = $event); return i0.ɵɵresetView($event); });
47
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_select_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
48
+ i0.ɵɵrepeaterCreate(2, QueryParametersGridComponent_For_23_Conditional_4_For_3_Template, 2, 2, "option", 14, i0.ɵɵrepeaterTrackByIdentity);
49
+ i0.ɵɵelementEnd()();
50
+ i0.ɵɵelementStart(4, "td")(5, "input", 15);
51
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r4); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.IsRequired, $event) || (param_r2.IsRequired = $event); return i0.ɵɵresetView($event); });
52
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
53
+ i0.ɵɵelementEnd()();
54
+ i0.ɵɵelementStart(6, "td")(7, "input", 16);
55
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r4); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.DefaultValue, $event) || (param_r2.DefaultValue = $event); return i0.ɵɵresetView($event); });
56
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
57
+ i0.ɵɵelementEnd()();
58
+ i0.ɵɵelementStart(8, "td")(9, "input", 16);
59
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r4); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.SampleValue, $event) || (param_r2.SampleValue = $event); return i0.ɵɵresetView($event); });
60
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
61
+ i0.ɵɵelementEnd()();
62
+ i0.ɵɵelementStart(10, "td")(11, "input", 15);
63
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r4); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.IsServerSet, $event) || (param_r2.IsServerSet = $event); return i0.ɵɵresetView($event); });
64
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_4_Template_input_ngModelChange_11_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
65
+ i0.ɵɵelementEnd()();
66
+ } if (rf & 2) {
67
+ const param_r2 = i0.ɵɵnextContext().$implicit;
68
+ const ctx_r2 = i0.ɵɵnextContext();
69
+ i0.ɵɵadvance();
70
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.Type);
71
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(15, _c0));
72
+ i0.ɵɵattribute("aria-label", "Type of " + param_r2.Name);
73
+ i0.ɵɵadvance();
74
+ i0.ɵɵrepeater(ctx_r2.Types);
75
+ i0.ɵɵadvance(3);
76
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.IsRequired);
77
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(16, _c0));
78
+ i0.ɵɵattribute("aria-label", param_r2.Name + " is required");
79
+ i0.ɵɵadvance(2);
80
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.DefaultValue);
81
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(17, _c0));
82
+ i0.ɵɵattribute("aria-label", "Default value of " + param_r2.Name);
83
+ i0.ɵɵadvance(2);
84
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.SampleValue);
85
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(18, _c0));
86
+ i0.ɵɵattribute("aria-label", "Sample value of " + param_r2.Name);
87
+ i0.ɵɵadvance(2);
88
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.IsServerSet);
89
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(19, _c0));
90
+ i0.ɵɵattribute("aria-label", "Only the server sets " + param_r2.Name);
91
+ } }
92
+ function QueryParametersGridComponent_For_23_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelementStart(0, "code");
94
+ i0.ɵɵtext(1);
95
+ i0.ɵɵelementEnd();
96
+ } if (rf & 2) {
97
+ const param_r2 = i0.ɵɵnextContext(2).$implicit;
98
+ i0.ɵɵadvance();
99
+ i0.ɵɵtextInterpolate(param_r2.DefaultValue);
100
+ } }
101
+ function QueryParametersGridComponent_For_23_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelementStart(0, "span", 11);
103
+ i0.ɵɵtext(1, "\u2014");
104
+ i0.ɵɵelementEnd();
105
+ } }
106
+ function QueryParametersGridComponent_For_23_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
107
+ i0.ɵɵelementStart(0, "code");
108
+ i0.ɵɵtext(1);
109
+ i0.ɵɵelementEnd();
110
+ } if (rf & 2) {
111
+ const param_r2 = i0.ɵɵnextContext(2).$implicit;
112
+ i0.ɵɵadvance();
113
+ i0.ɵɵtextInterpolate(param_r2.SampleValue);
114
+ } }
115
+ function QueryParametersGridComponent_For_23_Conditional_5_Conditional_10_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "span", 11);
117
+ i0.ɵɵtext(1, "\u2014");
118
+ i0.ɵɵelementEnd();
119
+ } }
120
+ function QueryParametersGridComponent_For_23_Conditional_5_Template(rf, ctx) { if (rf & 1) {
121
+ i0.ɵɵelementStart(0, "td")(1, "code");
122
+ i0.ɵɵtext(2);
123
+ i0.ɵɵelementEnd()();
124
+ i0.ɵɵelementStart(3, "td");
125
+ i0.ɵɵtext(4);
126
+ i0.ɵɵelementEnd();
127
+ i0.ɵɵelementStart(5, "td");
128
+ i0.ɵɵconditionalCreate(6, QueryParametersGridComponent_For_23_Conditional_5_Conditional_6_Template, 2, 1, "code")(7, QueryParametersGridComponent_For_23_Conditional_5_Conditional_7_Template, 2, 0, "span", 11);
129
+ i0.ɵɵelementEnd();
130
+ i0.ɵɵelementStart(8, "td");
131
+ i0.ɵɵconditionalCreate(9, QueryParametersGridComponent_For_23_Conditional_5_Conditional_9_Template, 2, 1, "code")(10, QueryParametersGridComponent_For_23_Conditional_5_Conditional_10_Template, 2, 0, "span", 11);
132
+ i0.ɵɵelementEnd();
133
+ i0.ɵɵelementStart(11, "td");
134
+ i0.ɵɵtext(12);
135
+ i0.ɵɵelementEnd();
136
+ } if (rf & 2) {
137
+ const param_r2 = i0.ɵɵnextContext().$implicit;
138
+ i0.ɵɵadvance(2);
139
+ i0.ɵɵtextInterpolate(param_r2.Type);
140
+ i0.ɵɵadvance(2);
141
+ i0.ɵɵtextInterpolate(param_r2.IsRequired ? "Yes" : "No");
142
+ i0.ɵɵadvance(2);
143
+ i0.ɵɵconditional(param_r2.DefaultValue ? 6 : 7);
144
+ i0.ɵɵadvance(3);
145
+ i0.ɵɵconditional(param_r2.SampleValue ? 9 : 10);
146
+ i0.ɵɵadvance(3);
147
+ i0.ɵɵtextInterpolate(param_r2.IsServerSet ? "Yes" : "No");
148
+ } }
149
+ function QueryParametersGridComponent_For_23_Conditional_10_Template(rf, ctx) { if (rf & 1) {
150
+ const _r6 = i0.ɵɵgetCurrentView();
151
+ i0.ɵɵelementStart(0, "textarea", 17);
152
+ i0.ɵɵtwoWayListener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_10_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const param_r2 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r2.Description, $event) || (param_r2.Description = $event); return i0.ɵɵresetView($event); });
153
+ i0.ɵɵlistener("ngModelChange", function QueryParametersGridComponent_For_23_Conditional_10_Template_textarea_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnAnnotationChange()); });
154
+ i0.ɵɵelementEnd();
155
+ } if (rf & 2) {
156
+ const param_r2 = i0.ɵɵnextContext().$implicit;
157
+ i0.ɵɵtwoWayProperty("ngModel", param_r2.Description);
158
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(3, _c0));
159
+ i0.ɵɵattribute("aria-label", "Description of " + param_r2.Name);
160
+ } }
161
+ function QueryParametersGridComponent_For_23_Conditional_11_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "span");
163
+ i0.ɵɵtext(1);
164
+ i0.ɵɵelementEnd();
165
+ } if (rf & 2) {
166
+ const param_r2 = i0.ɵɵnextContext().$implicit;
167
+ i0.ɵɵadvance();
168
+ i0.ɵɵtextInterpolate(param_r2.Description);
169
+ } }
170
+ function QueryParametersGridComponent_For_23_Conditional_12_Template(rf, ctx) { if (rf & 1) {
171
+ i0.ɵɵelementStart(0, "span", 11);
172
+ i0.ɵɵtext(1, "\u2014");
173
+ i0.ɵɵelementEnd();
174
+ } }
175
+ function QueryParametersGridComponent_For_23_Conditional_13_Template(rf, ctx) { if (rf & 1) {
176
+ const _r7 = i0.ɵɵgetCurrentView();
177
+ i0.ɵɵelementStart(0, "td", 3)(1, "button", 18);
178
+ i0.ɵɵlistener("click", function QueryParametersGridComponent_For_23_Conditional_13_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r7); const param_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Remove.emit(param_r2)); });
179
+ i0.ɵɵelement(2, "i", 19);
180
+ i0.ɵɵelementEnd()();
181
+ } if (rf & 2) {
182
+ const param_r2 = i0.ɵɵnextContext().$implicit;
183
+ i0.ɵɵadvance();
184
+ i0.ɵɵattribute("aria-label", "Remove parameter " + param_r2.Name);
185
+ } }
186
+ function QueryParametersGridComponent_For_23_Template(rf, ctx) { if (rf & 1) {
187
+ i0.ɵɵelementStart(0, "tr", 4)(1, "td", 6);
188
+ i0.ɵɵconditionalCreate(2, QueryParametersGridComponent_For_23_Conditional_2_Template, 1, 3, "input", 7)(3, QueryParametersGridComponent_For_23_Conditional_3_Template, 2, 1, "code");
189
+ i0.ɵɵelementEnd();
190
+ i0.ɵɵconditionalCreate(4, QueryParametersGridComponent_For_23_Conditional_4_Template, 12, 20)(5, QueryParametersGridComponent_For_23_Conditional_5_Template, 13, 5);
191
+ i0.ɵɵelementStart(6, "td", 8)(7, "span", 9);
192
+ i0.ɵɵtext(8);
193
+ i0.ɵɵelementEnd()();
194
+ i0.ɵɵelementStart(9, "td", 2);
195
+ i0.ɵɵconditionalCreate(10, QueryParametersGridComponent_For_23_Conditional_10_Template, 1, 4, "textarea", 10)(11, QueryParametersGridComponent_For_23_Conditional_11_Template, 2, 1, "span")(12, QueryParametersGridComponent_For_23_Conditional_12_Template, 2, 0, "span", 11);
196
+ i0.ɵɵelementEnd();
197
+ i0.ɵɵconditionalCreate(13, QueryParametersGridComponent_For_23_Conditional_13_Template, 3, 1, "td", 3);
198
+ i0.ɵɵelementEnd();
199
+ } if (rf & 2) {
200
+ const param_r2 = ctx.$implicit;
201
+ const ctx_r2 = i0.ɵɵnextContext();
202
+ i0.ɵɵadvance(2);
203
+ i0.ɵɵconditional(ctx_r2.EditMode && !param_r2.IsSaved ? 2 : 3);
204
+ i0.ɵɵadvance(2);
205
+ i0.ɵɵconditional(ctx_r2.EditMode ? 4 : 5);
206
+ i0.ɵɵadvance(3);
207
+ i0.ɵɵclassMap("qcg-detect qcg-detect--" + (param_r2.DetectionMethod || "none").toLowerCase());
208
+ i0.ɵɵproperty("title", ctx_r2.DetectionTitle(param_r2));
209
+ i0.ɵɵadvance();
210
+ i0.ɵɵtextInterpolate(ctx_r2.DetectionLabel(param_r2));
211
+ i0.ɵɵadvance(2);
212
+ i0.ɵɵconditional(ctx_r2.EditMode ? 10 : param_r2.Description ? 11 : 12);
213
+ i0.ɵɵadvance(3);
214
+ i0.ɵɵconditional(ctx_r2.EditMode ? 13 : -1);
215
+ } }
216
+ /**
217
+ * `<mj-query-parameters-grid>` — a query's parameters as a table.
218
+ *
219
+ * Which parameters exist is a fact of the SQL, so the name is read-only on a saved row (a row not
220
+ * saved yet declares it). Everything about a parameter that a person decides is an annotation and
221
+ * is editable in edit mode: type, required, default and sample values, whether only the server
222
+ * sets it, and the description. A parameter the SQL no longer uses is kept and flagged on the
223
+ * query (see its extraction message).
224
+ */
225
+ export class QueryParametersGridComponent {
226
+ constructor() {
227
+ this.Parameters = [];
228
+ this.EditMode = false;
229
+ /** The user asked to remove a parameter (it is removed when the query is saved). */
230
+ this.Remove = new EventEmitter();
231
+ /** An annotation changed, so the host can update its unsaved-changes state. */
232
+ this.Changed = new EventEmitter();
233
+ this.Types = ['string', 'number', 'date', 'boolean', 'array'];
234
+ }
235
+ DetectionLabel(parameter) {
236
+ return DetectionMethodLabel(parameter.DetectionMethod);
237
+ }
238
+ DetectionTitle(parameter) {
239
+ return DetectionMethodTitle(parameter.DetectionMethod);
240
+ }
241
+ TrackParameter(index, parameter) {
242
+ return parameter.ID || `new-${index}`;
243
+ }
244
+ OnAnnotationChange() {
245
+ this.Changed.emit();
246
+ }
247
+ static { this.ɵfac = function QueryParametersGridComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryParametersGridComponent)(); }; }
248
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryParametersGridComponent, selectors: [["mj-query-parameters-grid"]], inputs: { Parameters: "Parameters", EditMode: "EditMode" }, outputs: { Remove: "Remove", Changed: "Changed" }, decls: 24, vars: 1, consts: [[1, "qcg-wrap"], [1, "qcg-table"], [1, "qcg-annotation"], [1, "qcg-actions"], [1, "qcg-row"], [1, "qcg-sr-only"], [1, "qcg-fact", "qcg-name"], ["aria-label", "Parameter name", "placeholder", "Name used in the SQL", 1, "mj-input", "qcg-input", 3, "ngModel", "ngModelOptions"], [1, "qcg-fact"], [1, "qcg-detect", 3, "title"], ["rows", "1", "placeholder", "What the value means", 1, "mj-input", "qcg-textarea", 3, "ngModel", "ngModelOptions"], [1, "qcg-muted"], ["aria-label", "Parameter name", "placeholder", "Name used in the SQL", 1, "mj-input", "qcg-input", 3, "ngModelChange", "ngModel", "ngModelOptions"], [1, "mj-input", "qcg-select", 3, "ngModelChange", "ngModel", "ngModelOptions"], [3, "value"], ["type", "checkbox", 3, "ngModelChange", "ngModel", "ngModelOptions"], [1, "mj-input", "qcg-input", 3, "ngModelChange", "ngModel", "ngModelOptions"], ["rows", "1", "placeholder", "What the value means", 1, "mj-input", "qcg-textarea", 3, "ngModelChange", "ngModel", "ngModelOptions"], ["mjButton", "", "Variant", "icon", "type", "button", "title", "Remove parameter", 3, "click"], [1, "fa-solid", "fa-trash"]], template: function QueryParametersGridComponent_Template(rf, ctx) { if (rf & 1) {
249
+ i0.ɵɵelementStart(0, "div", 0)(1, "table", 1)(2, "thead")(3, "tr")(4, "th");
250
+ i0.ɵɵtext(5, "Name");
251
+ i0.ɵɵelementEnd();
252
+ i0.ɵɵelementStart(6, "th");
253
+ i0.ɵɵtext(7, "Type");
254
+ i0.ɵɵelementEnd();
255
+ i0.ɵɵelementStart(8, "th");
256
+ i0.ɵɵtext(9, "Required");
257
+ i0.ɵɵelementEnd();
258
+ i0.ɵɵelementStart(10, "th");
259
+ i0.ɵɵtext(11, "Default");
260
+ i0.ɵɵelementEnd();
261
+ i0.ɵɵelementStart(12, "th");
262
+ i0.ɵɵtext(13, "Sample");
263
+ i0.ɵɵelementEnd();
264
+ i0.ɵɵelementStart(14, "th");
265
+ i0.ɵɵtext(15, "Server-set");
266
+ i0.ɵɵelementEnd();
267
+ i0.ɵɵelementStart(16, "th");
268
+ i0.ɵɵtext(17, "Detected by");
269
+ i0.ɵɵelementEnd();
270
+ i0.ɵɵelementStart(18, "th", 2);
271
+ i0.ɵɵtext(19, "Description");
272
+ i0.ɵɵelementEnd();
273
+ i0.ɵɵconditionalCreate(20, QueryParametersGridComponent_Conditional_20_Template, 3, 0, "th", 3);
274
+ i0.ɵɵelementEnd()();
275
+ i0.ɵɵelementStart(21, "tbody");
276
+ i0.ɵɵrepeaterCreate(22, QueryParametersGridComponent_For_23_Template, 14, 8, "tr", 4, ctx.TrackParameter, true);
277
+ i0.ɵɵelementEnd()()();
278
+ } if (rf & 2) {
279
+ i0.ɵɵadvance(20);
280
+ i0.ɵɵconditional(ctx.EditMode ? 20 : -1);
281
+ i0.ɵɵadvance(2);
282
+ i0.ɵɵrepeater(ctx.Parameters);
283
+ } }, dependencies: [FormsModule, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, MJButtonDirective], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.qcg-wrap[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.qcg-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.qcg-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n padding: var(--mj-space-2);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.qcg-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: var(--mj-space-2);\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: top;\n}\n\n.qcg-row[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n}\n\n\n.qcg-fact[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n}\n\n.qcg-fact[_ngcontent-%COMP%] code[_ngcontent-%COMP%], \n.qcg-object[_ngcontent-%COMP%] {\n font-family: var(--mj-font-family-mono);\n font-size: var(--mj-text-xs);\n}\n\n.qcg-seq[_ngcontent-%COMP%] {\n width: 2.5rem;\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.qcg-name[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.qcg-annotation[_ngcontent-%COMP%] {\n min-width: 14rem;\n}\n\n.qcg-actions[_ngcontent-%COMP%] {\n width: 2.5rem;\n text-align: right;\n}\n\n.qcg-input[_ngcontent-%COMP%], \n.qcg-select[_ngcontent-%COMP%], \n.qcg-textarea[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 6rem;\n font-size: var(--mj-text-sm);\n}\n\n.qcg-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n margin-bottom: var(--mj-space-1);\n}\n\n.qcg-check[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-1);\n align-items: center;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.qcg-tag[_ngcontent-%COMP%] {\n margin-left: var(--mj-space-1);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n padding: 0 var(--mj-space-1);\n}\n\n.qcg-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font: inherit;\n color: var(--mj-brand-primary);\n text-align: left;\n}\n\n.qcg-link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.qcg-link[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n}\n\n.qcg-muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.qcg-sub[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-xs);\n margin-top: var(--mj-space-1);\n}\n\n.qcg-detect[_ngcontent-%COMP%] {\n --qcg-accent: var(--mj-text-muted);\n display: inline-block;\n font-size: var(--mj-text-xs);\n border-radius: var(--mj-radius-full);\n padding: 0 var(--mj-space-2);\n color: var(--qcg-accent);\n background: color-mix(in srgb, var(--qcg-accent) 12%, transparent);\n white-space: nowrap;\n}\n\n.qcg-detect--database[_ngcontent-%COMP%] { --qcg-accent: var(--mj-status-info); }\n.qcg-detect--parser[_ngcontent-%COMP%] { --qcg-accent: var(--mj-brand-primary); }\n.qcg-detect--manual[_ngcontent-%COMP%] { --qcg-accent: var(--mj-status-success); }\n.qcg-detect--ai[_ngcontent-%COMP%] { --qcg-accent: var(--mj-status-warning); }\n\n.qcg-sr-only[_ngcontent-%COMP%] {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n}"] }); }
284
+ }
285
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryParametersGridComponent, [{
286
+ type: Component,
287
+ args: [{ standalone: true, selector: 'mj-query-parameters-grid', changeDetection: ChangeDetectionStrategy.Default, imports: [FormsModule, MJButtonDirective], template: "<div class=\"qcg-wrap\">\n <table class=\"qcg-table\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Type</th>\n <th>Required</th>\n <th>Default</th>\n <th>Sample</th>\n <th>Server-set</th>\n <th>Detected by</th>\n <th class=\"qcg-annotation\">Description</th>\n @if (EditMode) {\n <th class=\"qcg-actions\"><span class=\"qcg-sr-only\">Actions</span></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (param of Parameters; track TrackParameter($index, param)) {\n <tr class=\"qcg-row\">\n <td class=\"qcg-fact qcg-name\">\n @if (EditMode && !param.IsSaved) {\n <input class=\"mj-input qcg-input\" [(ngModel)]=\"param.Name\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" aria-label=\"Parameter name\" placeholder=\"Name used in the SQL\" />\n } @else {\n <code>{{ param.Name }}</code>\n }\n </td>\n @if (EditMode) {\n <td>\n <select class=\"mj-input qcg-select\" [(ngModel)]=\"param.Type\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Type of ' + param.Name\">\n @for (t of Types; track t) {\n <option [value]=\"t\">{{ t }}</option>\n }\n </select>\n </td>\n <td>\n <input type=\"checkbox\" [(ngModel)]=\"param.IsRequired\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"param.Name + ' is required'\" />\n </td>\n <td>\n <input class=\"mj-input qcg-input\" [(ngModel)]=\"param.DefaultValue\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Default value of ' + param.Name\" />\n </td>\n <td>\n <input class=\"mj-input qcg-input\" [(ngModel)]=\"param.SampleValue\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Sample value of ' + param.Name\" />\n </td>\n <td>\n <input type=\"checkbox\" [(ngModel)]=\"param.IsServerSet\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Only the server sets ' + param.Name\" />\n </td>\n } @else {\n <td><code>{{ param.Type }}</code></td>\n <td>{{ param.IsRequired ? 'Yes' : 'No' }}</td>\n <td>@if (param.DefaultValue) { <code>{{ param.DefaultValue }}</code> } @else { <span class=\"qcg-muted\">\u2014</span> }</td>\n <td>@if (param.SampleValue) { <code>{{ param.SampleValue }}</code> } @else { <span class=\"qcg-muted\">\u2014</span> }</td>\n <td>{{ param.IsServerSet ? 'Yes' : 'No' }}</td>\n }\n <td class=\"qcg-fact\">\n <span class=\"qcg-detect\" [class]=\"'qcg-detect qcg-detect--' + (param.DetectionMethod || 'none').toLowerCase()\" [title]=\"DetectionTitle(param)\">{{ DetectionLabel(param) }}</span>\n </td>\n <td class=\"qcg-annotation\">\n @if (EditMode) {\n <textarea class=\"mj-input qcg-textarea\" rows=\"1\" [(ngModel)]=\"param.Description\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Description of ' + param.Name\" placeholder=\"What the value means\"></textarea>\n } @else if (param.Description) {\n <span>{{ param.Description }}</span>\n } @else {\n <span class=\"qcg-muted\">\u2014</span>\n }\n </td>\n @if (EditMode) {\n <td class=\"qcg-actions\">\n <button mjButton Variant=\"icon\" type=\"button\" (click)=\"Remove.emit(param)\" [attr.aria-label]=\"'Remove parameter ' + param.Name\" title=\"Remove parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n", styles: [":host {\n display: block;\n}\n\n.qcg-wrap {\n overflow-x: auto;\n}\n\n.qcg-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.qcg-table th {\n text-align: left;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n padding: var(--mj-space-2);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.qcg-table td {\n padding: var(--mj-space-2);\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: top;\n}\n\n.qcg-row:hover td {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Facts come from the SQL and the server: shown plainly, never as inputs. */\n.qcg-fact {\n color: var(--mj-text-primary);\n}\n\n.qcg-fact code,\n.qcg-object {\n font-family: var(--mj-font-family-mono);\n font-size: var(--mj-text-xs);\n}\n\n.qcg-seq {\n width: 2.5rem;\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.qcg-name {\n white-space: nowrap;\n}\n\n.qcg-annotation {\n min-width: 14rem;\n}\n\n.qcg-actions {\n width: 2.5rem;\n text-align: right;\n}\n\n.qcg-input,\n.qcg-select,\n.qcg-textarea {\n width: 100%;\n min-width: 6rem;\n font-size: var(--mj-text-sm);\n}\n\n.qcg-textarea {\n resize: vertical;\n margin-bottom: var(--mj-space-1);\n}\n\n.qcg-check {\n display: flex;\n gap: var(--mj-space-1);\n align-items: center;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.qcg-tag {\n margin-left: var(--mj-space-1);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n padding: 0 var(--mj-space-1);\n}\n\n.qcg-link {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font: inherit;\n color: var(--mj-brand-primary);\n text-align: left;\n}\n\n.qcg-link:hover {\n text-decoration: underline;\n}\n\n.qcg-link:focus-visible {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n}\n\n.qcg-muted {\n color: var(--mj-text-muted);\n}\n\n.qcg-sub {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-xs);\n margin-top: var(--mj-space-1);\n}\n\n.qcg-detect {\n --qcg-accent: var(--mj-text-muted);\n display: inline-block;\n font-size: var(--mj-text-xs);\n border-radius: var(--mj-radius-full);\n padding: 0 var(--mj-space-2);\n color: var(--qcg-accent);\n background: color-mix(in srgb, var(--qcg-accent) 12%, transparent);\n white-space: nowrap;\n}\n\n.qcg-detect--database { --qcg-accent: var(--mj-status-info); }\n.qcg-detect--parser { --qcg-accent: var(--mj-brand-primary); }\n.qcg-detect--manual { --qcg-accent: var(--mj-status-success); }\n.qcg-detect--ai { --qcg-accent: var(--mj-status-warning); }\n\n.qcg-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n}\n"] }]
288
+ }], null, { Parameters: [{
289
+ type: Input
290
+ }], EditMode: [{
291
+ type: Input
292
+ }], Remove: [{
293
+ type: Output
294
+ }], Changed: [{
295
+ type: Output
296
+ }] }); })();
297
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryParametersGridComponent, { className: "QueryParametersGridComponent", filePath: "src/lib/custom/Queries/query-parameters-grid.component.ts", lineNumber: 27 }); })();
298
+ //# sourceMappingURL=query-parameters-grid.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-parameters-grid.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Queries/query-parameters-grid.component.ts","../../../../src/lib/custom/Queries/query-parameters-grid.component.html"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { MJQueryParameterEntity } from '@memberjunction/core-entities';\nimport { MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { DetectionMethodLabel, DetectionMethodTitle } from './query-child-labels';\n\n/** A parameter type a query author can choose. */\ntype ParameterType = MJQueryParameterEntity['Type'];\n\n/**\n * `<mj-query-parameters-grid>` — a query's parameters as a table.\n *\n * Which parameters exist is a fact of the SQL, so the name is read-only on a saved row (a row not\n * saved yet declares it). Everything about a parameter that a person decides is an annotation and\n * is editable in edit mode: type, required, default and sample values, whether only the server\n * sets it, and the description. A parameter the SQL no longer uses is kept and flagged on the\n * query (see its extraction message).\n */\n@Component({\n standalone: true,\n selector: 'mj-query-parameters-grid',\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [FormsModule, MJButtonDirective],\n templateUrl: './query-parameters-grid.component.html',\n styleUrls: ['./query-child-grids.css'],\n})\nexport class QueryParametersGridComponent {\n @Input() Parameters: readonly MJQueryParameterEntity[] = [];\n @Input() EditMode = false;\n\n /** The user asked to remove a parameter (it is removed when the query is saved). */\n @Output() Remove = new EventEmitter<MJQueryParameterEntity>();\n /** An annotation changed, so the host can update its unsaved-changes state. */\n @Output() Changed = new EventEmitter<void>();\n\n public readonly Types: readonly ParameterType[] = ['string', 'number', 'date', 'boolean', 'array'];\n\n public DetectionLabel(parameter: MJQueryParameterEntity): string {\n return DetectionMethodLabel(parameter.DetectionMethod);\n }\n\n public DetectionTitle(parameter: MJQueryParameterEntity): string {\n return DetectionMethodTitle(parameter.DetectionMethod);\n }\n\n public TrackParameter(index: number, parameter: MJQueryParameterEntity): string {\n return parameter.ID || `new-${index}`;\n }\n\n public OnAnnotationChange(): void {\n this.Changed.emit();\n }\n}\n","<div class=\"qcg-wrap\">\n <table class=\"qcg-table\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Type</th>\n <th>Required</th>\n <th>Default</th>\n <th>Sample</th>\n <th>Server-set</th>\n <th>Detected by</th>\n <th class=\"qcg-annotation\">Description</th>\n @if (EditMode) {\n <th class=\"qcg-actions\"><span class=\"qcg-sr-only\">Actions</span></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (param of Parameters; track TrackParameter($index, param)) {\n <tr class=\"qcg-row\">\n <td class=\"qcg-fact qcg-name\">\n @if (EditMode && !param.IsSaved) {\n <input class=\"mj-input qcg-input\" [(ngModel)]=\"param.Name\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" aria-label=\"Parameter name\" placeholder=\"Name used in the SQL\" />\n } @else {\n <code>{{ param.Name }}</code>\n }\n </td>\n @if (EditMode) {\n <td>\n <select class=\"mj-input qcg-select\" [(ngModel)]=\"param.Type\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Type of ' + param.Name\">\n @for (t of Types; track t) {\n <option [value]=\"t\">{{ t }}</option>\n }\n </select>\n </td>\n <td>\n <input type=\"checkbox\" [(ngModel)]=\"param.IsRequired\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"param.Name + ' is required'\" />\n </td>\n <td>\n <input class=\"mj-input qcg-input\" [(ngModel)]=\"param.DefaultValue\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Default value of ' + param.Name\" />\n </td>\n <td>\n <input class=\"mj-input qcg-input\" [(ngModel)]=\"param.SampleValue\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Sample value of ' + param.Name\" />\n </td>\n <td>\n <input type=\"checkbox\" [(ngModel)]=\"param.IsServerSet\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Only the server sets ' + param.Name\" />\n </td>\n } @else {\n <td><code>{{ param.Type }}</code></td>\n <td>{{ param.IsRequired ? 'Yes' : 'No' }}</td>\n <td>@if (param.DefaultValue) { <code>{{ param.DefaultValue }}</code> } @else { <span class=\"qcg-muted\">—</span> }</td>\n <td>@if (param.SampleValue) { <code>{{ param.SampleValue }}</code> } @else { <span class=\"qcg-muted\">—</span> }</td>\n <td>{{ param.IsServerSet ? 'Yes' : 'No' }}</td>\n }\n <td class=\"qcg-fact\">\n <span class=\"qcg-detect\" [class]=\"'qcg-detect qcg-detect--' + (param.DetectionMethod || 'none').toLowerCase()\" [title]=\"DetectionTitle(param)\">{{ DetectionLabel(param) }}</span>\n </td>\n <td class=\"qcg-annotation\">\n @if (EditMode) {\n <textarea class=\"mj-input qcg-textarea\" rows=\"1\" [(ngModel)]=\"param.Description\" [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"OnAnnotationChange()\" [attr.aria-label]=\"'Description of ' + param.Name\" placeholder=\"What the value means\"></textarea>\n } @else if (param.Description) {\n <span>{{ param.Description }}</span>\n } @else {\n <span class=\"qcg-muted\">—</span>\n }\n </td>\n @if (EditMode) {\n <td class=\"qcg-actions\">\n <button mjButton Variant=\"icon\" type=\"button\" (click)=\"Remove.emit(param)\" [attr.aria-label]=\"'Remove parameter ' + param.Name\" title=\"Remove parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n"]}
@@ -446,11 +446,11 @@ let MJRubricEvaluationScoreFormComponentExtended = class MJRubricEvaluationScore
446
446
  await super.ngOnInit();
447
447
  const view = RunView.FromMetadataProvider(this.ProviderToUse);
448
448
  const user = this.ProviderToUse.CurrentUser;
449
- const criteria = await view.RunView({ EntityName: 'MJ: Rubric Criteria', ExtraFilter: `ID='${this.record.CriterionID}'`, ResultType: 'simple', MaxRows: 1 }, user);
449
+ const criteria = await view.RunView({ EntityName: 'MJ: Rubric Criteria', ExtraFilter: `ID='${this.record.CriterionID}'`, ResultType: 'simple', MaxRows: 1, SkipTotalRowCount: true }, user);
450
450
  const criterion = (criteria.Results ?? [])[0];
451
451
  if (!criterion)
452
452
  return;
453
- const versions = await view.RunView({ EntityName: 'MJ: Rubric Versions', ExtraFilter: `ID='${criterion.RubricVersionID}'`, ResultType: 'simple', MaxRows: 1 }, user);
453
+ const versions = await view.RunView({ EntityName: 'MJ: Rubric Versions', ExtraFilter: `ID='${criterion.RubricVersionID}'`, ResultType: 'simple', MaxRows: 1, SkipTotalRowCount: true }, user);
454
454
  const version = (versions.Results ?? [])[0];
455
455
  this.Policy = String(criterion.NotApplicablePolicy || version?.NotApplicablePolicy || '');
456
456
  if (!criterion.ScaleID)