terrier-engine 4.4.35 → 4.5.0

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 (166) hide show
  1. package/data-dive/dives/group-editor.ts +8 -3
  2. package/package.json +1 -1
  3. package/terrier/forms.ts +36 -1
  4. package/terrier/gen/badges.ts +734 -0
  5. package/terrier/glyps.ts +12 -1
  6. package/terrier/images/badges/badge-accounts_payable-handling.svg +48 -0
  7. package/terrier/images/badges/badge-accounts_receivable-handling.svg +50 -0
  8. package/terrier/images/badges/badge-applicator_license-admin.svg +54 -0
  9. package/terrier/images/badges/badge-autopay-admin.svg +46 -0
  10. package/terrier/images/badges/badge-autopay-handling.svg +46 -0
  11. package/terrier/images/badges/badge-bats-admin.svg +47 -0
  12. package/terrier/images/badges/badge-bats-management.svg +45 -0
  13. package/terrier/images/badges/badge-bats-ops.svg +47 -0
  14. package/terrier/images/badges/badge-bats-sales.svg +47 -0
  15. package/terrier/images/badges/badge-clypboard_hardware-admin.svg +70 -0
  16. package/terrier/images/badges/badge-clypboard_project-admin.svg +51 -0
  17. package/terrier/images/badges/badge-clypmart-admin.svg +58 -0
  18. package/terrier/images/badges/badge-commercial-admin.svg +56 -0
  19. package/terrier/images/badges/badge-commercial-management.svg +54 -0
  20. package/terrier/images/badges/badge-commercial-ops.svg +56 -0
  21. package/terrier/images/badges/badge-commercial-sales.svg +56 -0
  22. package/terrier/images/badges/badge-compliance-admin.svg +51 -0
  23. package/terrier/images/badges/badge-contracts-admin.svg +54 -0
  24. package/terrier/images/badges/badge-contracts-reporting.svg +52 -0
  25. package/terrier/images/badges/badge-copesan-admin.svg +45 -0
  26. package/terrier/images/badges/badge-credit_card-admin.svg +55 -0
  27. package/terrier/images/badges/badge-customer_call-handling.svg +49 -0
  28. package/terrier/images/badges/badge-customer_text-handling.svg +59 -0
  29. package/terrier/images/badges/badge-employee_data-admin.svg +49 -0
  30. package/terrier/images/badges/badge-employee_data-handling.svg +49 -0
  31. package/terrier/images/badges/badge-employee_data-reporting.svg +47 -0
  32. package/terrier/images/badges/badge-finance-admin.svg +49 -0
  33. package/terrier/images/badges/badge-finance-reporting.svg +47 -0
  34. package/terrier/images/badges/badge-fleet-admin.svg +58 -0
  35. package/terrier/images/badges/badge-fumigation-admin.svg +56 -0
  36. package/terrier/images/badges/badge-fumigation-management.svg +54 -0
  37. package/terrier/images/badges/badge-fumigation-ops.svg +56 -0
  38. package/terrier/images/badges/badge-information_technology-admin.svg +51 -0
  39. package/terrier/images/badges/badge-information_technology-management.svg +49 -0
  40. package/terrier/images/badges/badge-irrigation-admin.svg +51 -0
  41. package/terrier/images/badges/badge-irrigation-management.svg +49 -0
  42. package/terrier/images/badges/badge-irrigation-ops.svg +51 -0
  43. package/terrier/images/badges/badge-irrigation-sales.svg +51 -0
  44. package/terrier/images/badges/badge-landscape-admin.svg +50 -0
  45. package/terrier/images/badges/badge-landscape-management.svg +48 -0
  46. package/terrier/images/badges/badge-landscape-ops.svg +50 -0
  47. package/terrier/images/badges/badge-landscape-sales.svg +50 -0
  48. package/terrier/images/badges/badge-marketing-admin.svg +59 -0
  49. package/terrier/images/badges/badge-mergers_and_acquisitions-admin.svg +47 -0
  50. package/terrier/images/badges/badge-mergers_and_acquisitions-reporting.svg +45 -0
  51. package/terrier/images/badges/badge-multi_housing-admin.svg +61 -0
  52. package/terrier/images/badges/badge-multi_housing-management.svg +59 -0
  53. package/terrier/images/badges/badge-multi_housing-ops.svg +61 -0
  54. package/terrier/images/badges/badge-multi_housing-sales.svg +61 -0
  55. package/terrier/images/badges/badge-payroll-admin.svg +48 -0
  56. package/terrier/images/badges/badge-payroll-reporting.svg +46 -0
  57. package/terrier/images/badges/badge-pest-admin.svg +48 -0
  58. package/terrier/images/badges/badge-pest-management.svg +46 -0
  59. package/terrier/images/badges/badge-pest-ops.svg +48 -0
  60. package/terrier/images/badges/badge-pest-sales.svg +48 -0
  61. package/terrier/images/badges/badge-pro-admin.svg +60 -0
  62. package/terrier/images/badges/badge-pro-management.svg +58 -0
  63. package/terrier/images/badges/badge-pro-ops.svg +60 -0
  64. package/terrier/images/badges/badge-pro-sales.svg +60 -0
  65. package/terrier/images/badges/badge-program-admin.svg +45 -0
  66. package/terrier/images/badges/badge-proposals-handling.svg +51 -0
  67. package/terrier/images/badges/badge-residential-admin.svg +53 -0
  68. package/terrier/images/badges/badge-residential-management.svg +51 -0
  69. package/terrier/images/badges/badge-residential-ops.svg +53 -0
  70. package/terrier/images/badges/badge-residential-sales.svg +53 -0
  71. package/terrier/images/badges/badge-sales-management.svg +46 -0
  72. package/terrier/images/badges/badge-sales-reporting.svg +46 -0
  73. package/terrier/images/badges/badge-scripts-admin.svg +50 -0
  74. package/terrier/images/badges/badge-scripts-reporting.svg +48 -0
  75. package/terrier/images/badges/badge-termite-admin.svg +48 -0
  76. package/terrier/images/badges/badge-termite-management.svg +46 -0
  77. package/terrier/images/badges/badge-termite-ops.svg +48 -0
  78. package/terrier/images/badges/badge-termite-sales.svg +48 -0
  79. package/terrier/images/badges/badge-wildlife-admin.svg +45 -0
  80. package/terrier/images/badges/badge-wildlife-management.svg +43 -0
  81. package/terrier/images/badges/badge-wildlife-ops.svg +45 -0
  82. package/terrier/images/badges/badge-wildlife-sales.svg +45 -0
  83. package/terrier/images/optimized/badge-accounts_payable.svg +1 -0
  84. package/terrier/images/optimized/badge-accounts_receivable.svg +1 -0
  85. package/terrier/images/optimized/badge-applicator_license.svg +1 -0
  86. package/terrier/images/optimized/badge-autopay.svg +1 -0
  87. package/terrier/images/optimized/badge-bats.svg +1 -0
  88. package/terrier/images/optimized/badge-clypboard_hardware.svg +1 -0
  89. package/terrier/images/optimized/badge-clypboard_project.svg +1 -0
  90. package/terrier/images/optimized/badge-clypmart.svg +1 -0
  91. package/terrier/images/optimized/badge-commercial.svg +1 -0
  92. package/terrier/images/optimized/badge-compliance.svg +1 -0
  93. package/terrier/images/optimized/badge-contracts.svg +1 -0
  94. package/terrier/images/optimized/badge-copesan.svg +1 -0
  95. package/terrier/images/optimized/badge-credit_card.svg +1 -0
  96. package/terrier/images/optimized/badge-customer_call.svg +1 -0
  97. package/terrier/images/optimized/badge-customer_text.svg +1 -0
  98. package/terrier/images/optimized/badge-employee_data.svg +1 -0
  99. package/terrier/images/optimized/badge-finance.svg +1 -0
  100. package/terrier/images/optimized/badge-fleet.svg +1 -0
  101. package/terrier/images/optimized/badge-fumigation.svg +1 -0
  102. package/terrier/images/optimized/badge-information_technology.svg +1 -0
  103. package/terrier/images/optimized/badge-irrigation.svg +1 -0
  104. package/terrier/images/optimized/badge-landscape.svg +1 -0
  105. package/terrier/images/optimized/badge-marketing.svg +1 -0
  106. package/terrier/images/optimized/badge-mergers_and_acquisitions.svg +1 -0
  107. package/terrier/images/optimized/badge-multi_housing.svg +1 -0
  108. package/terrier/images/optimized/badge-payroll.svg +1 -0
  109. package/terrier/images/optimized/badge-pest.svg +1 -0
  110. package/terrier/images/optimized/badge-pro.svg +1 -0
  111. package/terrier/images/optimized/badge-program.svg +1 -0
  112. package/terrier/images/optimized/badge-proposals.svg +1 -0
  113. package/terrier/images/optimized/badge-residential.svg +1 -0
  114. package/terrier/images/optimized/badge-sales.svg +1 -0
  115. package/terrier/images/optimized/badge-scripts.svg +1 -0
  116. package/terrier/images/optimized/badge-termite.svg +1 -0
  117. package/terrier/images/optimized/badge-wildlife.svg +1 -0
  118. package/terrier/images/optimized/badge_role-admin.svg +1 -0
  119. package/terrier/images/optimized/badge_role-handling.svg +1 -0
  120. package/terrier/images/optimized/badge_role-management.svg +1 -0
  121. package/terrier/images/optimized/badge_role-ops.svg +1 -0
  122. package/terrier/images/optimized/badge_role-reporting.svg +1 -0
  123. package/terrier/images/optimized/badge_role-sales.svg +1 -0
  124. package/terrier/images/raw/badge-accounts_payable.svg +22 -0
  125. package/terrier/images/raw/badge-accounts_receivable.svg +24 -0
  126. package/terrier/images/raw/badge-applicator_license.svg +28 -0
  127. package/terrier/images/raw/badge-autopay.svg +20 -0
  128. package/terrier/images/raw/badge-bats.svg +19 -0
  129. package/terrier/images/raw/badge-clypboard_hardware.svg +44 -0
  130. package/terrier/images/raw/badge-clypboard_project.svg +25 -0
  131. package/terrier/images/raw/badge-clypmart.svg +37 -0
  132. package/terrier/images/raw/badge-commercial.svg +43 -0
  133. package/terrier/images/raw/badge-compliance.svg +26 -0
  134. package/terrier/images/raw/badge-contracts.svg +28 -0
  135. package/terrier/images/raw/badge-copesan.svg +19 -0
  136. package/terrier/images/raw/badge-credit_card.svg +29 -0
  137. package/terrier/images/raw/badge-customer_call.svg +26 -0
  138. package/terrier/images/raw/badge-customer_text.svg +33 -0
  139. package/terrier/images/raw/badge-employee_data.svg +23 -0
  140. package/terrier/images/raw/badge-finance.svg +23 -0
  141. package/terrier/images/raw/badge-fleet.svg +32 -0
  142. package/terrier/images/raw/badge-fumigation.svg +30 -0
  143. package/terrier/images/raw/badge-information_technology.svg +25 -0
  144. package/terrier/images/raw/badge-irrigation.svg +28 -0
  145. package/terrier/images/raw/badge-landscape.svg +24 -0
  146. package/terrier/images/raw/badge-marketing.svg +34 -0
  147. package/terrier/images/raw/badge-mergers_and_acquisitions.svg +22 -0
  148. package/terrier/images/raw/badge-multi_housing.svg +72 -0
  149. package/terrier/images/raw/badge-payroll.svg +22 -0
  150. package/terrier/images/raw/badge-pest.svg +22 -0
  151. package/terrier/images/raw/badge-pro.svg +34 -0
  152. package/terrier/images/raw/badge-program.svg +19 -0
  153. package/terrier/images/raw/badge-proposals.svg +25 -0
  154. package/terrier/images/raw/badge-residential.svg +29 -0
  155. package/terrier/images/raw/badge-sales.svg +22 -0
  156. package/terrier/images/raw/badge-scripts.svg +24 -0
  157. package/terrier/images/raw/badge-termite.svg +22 -0
  158. package/terrier/images/raw/badge-wildlife.svg +19 -0
  159. package/terrier/images/raw/badge_role-admin.svg +35 -0
  160. package/terrier/images/raw/badge_role-handling.svg +35 -0
  161. package/terrier/images/raw/badge_role-management.svg +35 -0
  162. package/terrier/images/raw/badge_role-ops.svg +35 -0
  163. package/terrier/images/raw/badge_role-reporting.svg +35 -0
  164. package/terrier/images/raw/badge_role-sales.svg +35 -0
  165. package/terrier/parts/glyp-picker.ts +98 -0
  166. package/terrier/parts/terrier-form-part.ts +4 -1
@@ -38,10 +38,15 @@ class GroupForm extends TerrierPart<{ group: UnpersistedDdDiveGroup }> {
38
38
  // for (const type of DdDiveEnumFields.visibility)
39
39
  // })
40
40
  })
41
- row.div('.stretch', col => {
42
- col.label().text("Description")
43
- this.fields.textArea(col, 'description_raw')
41
+ row.div('.shrink', col => {
42
+ col.label().text("Icon")
43
+ this.fields.renderGlypField(col, 'icon')
44
44
  })
45
+
46
+ })
47
+ parent.div(row => {
48
+ row.label().text("Description")
49
+ this.fields.textArea(row, 'description_raw')
45
50
  })
46
51
  }
47
52
 
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "files": [
5
5
  "*"
6
6
  ],
7
- "version": "4.4.35",
7
+ "version": "4.5.0",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/Terrier-Tech/terrier-engine"
package/terrier/forms.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  import {Field, FormFields, FormPartData, InputType, KeyOfType, SelectOptions} from "tuff-core/forms"
2
- import {strings} from "tuff-core"
2
+ import {logging, messages, strings} from "tuff-core"
3
3
  import {DbErrors} from "./db-client"
4
4
  import {PartTag} from "tuff-core/parts"
5
5
  import {InputTag, InputTagAttrs} from "tuff-core/html"
6
6
  import TerrierPart from "./parts/terrier-part"
7
+ import GlypPicker from "./parts/glyp-picker"
8
+ import Glyps from "./glyps"
9
+
10
+ const log = new logging.Logger("TerrierForms")
7
11
 
8
12
  ////////////////////////////////////////////////////////////////////////////////
9
13
  // Options
@@ -35,6 +39,8 @@ export class TerrierFormFields<T extends FormPartData> extends FormFields<T> {
35
39
 
36
40
  errors?: DbErrors<T>
37
41
 
42
+ pickGlypKey = messages.typedKey<{ key: KeyOfType<T, string | undefined> & string }>()
43
+
38
44
  /**
39
45
  * You must pass a `TerrierPart` so that we can render the error bubble with it.
40
46
  * @param part
@@ -44,6 +50,18 @@ export class TerrierFormFields<T extends FormPartData> extends FormFields<T> {
44
50
  constructor(part: TerrierPart<any>, data: T, errors?: DbErrors<T>) {
45
51
  super(part, data)
46
52
  this.errors = errors
53
+
54
+
55
+ this.part.onClick(this.pickGlypKey, m => {
56
+ log.info(`Pick glyp for ${m.data.key}`)
57
+ const key = m.data.key as KeyOfType<T, string | undefined>
58
+ const current = this.data[key]
59
+ const onPicked = (icon?: string) => {
60
+ this.data[key] = icon as any // TODO: figure out how to better make typescript happy
61
+ this.part.dirty()
62
+ }
63
+ part.app.showModal(GlypPicker.Modal, {icon: current, onPicked})
64
+ })
47
65
  }
48
66
 
49
67
  protected input<Key extends KeyOfType<T, any> & string>(parent: PartTag, type: InputType, name: Key, serializerType: {
@@ -66,6 +84,23 @@ export class TerrierFormFields<T extends FormPartData> extends FormFields<T> {
66
84
  (this.part as TerrierPart<any>).renderErrorBubble(parent, this.errors)
67
85
  }
68
86
  }
87
+
88
+ /**
89
+ * Render a readonly field for a glyp icon value that shows the glyp picker when clicked.
90
+ * @param parent where to render the field
91
+ * @param key the data key where the icon value is stored
92
+ */
93
+ renderGlypField<Key extends KeyOfType<T, string> & string>(parent: PartTag, key: Key) {
94
+ const value = this.data[key]
95
+ parent.a('.tt-readonly-field', field => {
96
+ if (value?.length) {
97
+ field.i(value)
98
+ field.div().text(Glyps.displayName(value))
99
+ } else {
100
+ field.div().text("Pick Icon")
101
+ }
102
+ }).emitClick(this.pickGlypKey, {key})
103
+ }
69
104
  }
70
105
 
71
106