@luquimbo/bi-superpowers 1.0.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 (193) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/.mcp.json +25 -0
  3. package/AGENTS.md +244 -0
  4. package/CHANGELOG.md +265 -0
  5. package/LICENSE +21 -0
  6. package/README.md +211 -0
  7. package/bin/build-plugin.js +30 -0
  8. package/bin/cli.js +1064 -0
  9. package/bin/commands/add.js +533 -0
  10. package/bin/commands/add.test.js +77 -0
  11. package/bin/commands/build-desktop.js +166 -0
  12. package/bin/commands/changelog.js +443 -0
  13. package/bin/commands/diff.js +325 -0
  14. package/bin/commands/lint.js +419 -0
  15. package/bin/commands/lint.test.js +103 -0
  16. package/bin/commands/mcp-setup.js +246 -0
  17. package/bin/commands/pull.js +287 -0
  18. package/bin/commands/pull.test.js +36 -0
  19. package/bin/commands/push.js +231 -0
  20. package/bin/commands/push.test.js +14 -0
  21. package/bin/commands/search.js +344 -0
  22. package/bin/commands/search.test.js +115 -0
  23. package/bin/commands/setup.js +545 -0
  24. package/bin/commands/setup.test.js +46 -0
  25. package/bin/commands/sync-profile.js +405 -0
  26. package/bin/commands/sync-profile.test.js +14 -0
  27. package/bin/commands/sync-source.js +418 -0
  28. package/bin/commands/sync-source.test.js +14 -0
  29. package/bin/commands/watch.js +206 -0
  30. package/bin/lib/generators/claude-plugin.js +266 -0
  31. package/bin/lib/generators/claude-plugin.test.js +110 -0
  32. package/bin/lib/generators/index.js +116 -0
  33. package/bin/lib/generators/shared.js +282 -0
  34. package/bin/lib/licensing/index.js +35 -0
  35. package/bin/lib/licensing/storage.js +364 -0
  36. package/bin/lib/licensing/storage.test.js +55 -0
  37. package/bin/lib/licensing/validator.js +213 -0
  38. package/bin/lib/licensing/validator.test.js +137 -0
  39. package/bin/lib/microsoft-mcp.js +176 -0
  40. package/bin/lib/microsoft-mcp.test.js +106 -0
  41. package/bin/lib/skills.js +84 -0
  42. package/bin/mcp/powerbi-modeling-launcher.js +38 -0
  43. package/bin/postinstall.js +44 -0
  44. package/bin/utils/errors.js +159 -0
  45. package/bin/utils/git.js +298 -0
  46. package/bin/utils/logger.js +142 -0
  47. package/bin/utils/mcp-detect.js +274 -0
  48. package/bin/utils/mcp-detect.test.js +105 -0
  49. package/bin/utils/pbix.js +305 -0
  50. package/bin/utils/pbix.test.js +37 -0
  51. package/bin/utils/profiles.js +312 -0
  52. package/bin/utils/projects.js +168 -0
  53. package/bin/utils/readline.js +206 -0
  54. package/bin/utils/readline.test.js +47 -0
  55. package/bin/utils/tui.js +314 -0
  56. package/bin/utils/tui.test.js +127 -0
  57. package/commands/contributions.md +265 -0
  58. package/commands/data-model-design.md +468 -0
  59. package/commands/dax-doctor.md +248 -0
  60. package/commands/fabric-scripts.md +452 -0
  61. package/commands/migration-assistant.md +290 -0
  62. package/commands/model-documenter.md +242 -0
  63. package/commands/pbi-connect.md +239 -0
  64. package/commands/project-kickoff.md +905 -0
  65. package/commands/report-layout.md +296 -0
  66. package/commands/rls-design.md +533 -0
  67. package/commands/theme-tweaker.md +624 -0
  68. package/config.example.json +23 -0
  69. package/config.json +23 -0
  70. package/desktop-extension/manifest.json +37 -0
  71. package/desktop-extension/package.json +10 -0
  72. package/desktop-extension/server.js +95 -0
  73. package/docs/openrouter-free-models.md +92 -0
  74. package/library/examples/README.md +151 -0
  75. package/library/examples/finance-reporting/README.md +351 -0
  76. package/library/examples/finance-reporting/data-model.md +267 -0
  77. package/library/examples/finance-reporting/measures.dax +557 -0
  78. package/library/examples/hr-analytics/README.md +371 -0
  79. package/library/examples/hr-analytics/data-model.md +315 -0
  80. package/library/examples/hr-analytics/measures.dax +460 -0
  81. package/library/examples/marketing-analytics/README.md +37 -0
  82. package/library/examples/marketing-analytics/data-model.md +62 -0
  83. package/library/examples/marketing-analytics/measures.dax +110 -0
  84. package/library/examples/retail-analytics/README.md +439 -0
  85. package/library/examples/retail-analytics/data-model.md +288 -0
  86. package/library/examples/retail-analytics/measures.dax +481 -0
  87. package/library/examples/supply-chain/README.md +37 -0
  88. package/library/examples/supply-chain/data-model.md +69 -0
  89. package/library/examples/supply-chain/measures.dax +77 -0
  90. package/library/examples/udf-library/README.md +228 -0
  91. package/library/examples/udf-library/functions.dax +571 -0
  92. package/library/snippets/dax/README.md +292 -0
  93. package/library/snippets/dax/business-domains.md +576 -0
  94. package/library/snippets/dax/calculate-patterns.md +276 -0
  95. package/library/snippets/dax/calculation-groups.md +489 -0
  96. package/library/snippets/dax/error-handling.md +495 -0
  97. package/library/snippets/dax/iterators-and-aggregations.md +474 -0
  98. package/library/snippets/dax/kpis-and-metrics.md +293 -0
  99. package/library/snippets/dax/rankings-and-topn.md +235 -0
  100. package/library/snippets/dax/security-patterns.md +413 -0
  101. package/library/snippets/dax/text-and-formatting.md +316 -0
  102. package/library/snippets/dax/time-intelligence.md +196 -0
  103. package/library/snippets/dax/user-defined-functions.md +477 -0
  104. package/library/snippets/dax/virtual-tables.md +546 -0
  105. package/library/snippets/excel-formulas/README.md +84 -0
  106. package/library/snippets/excel-formulas/aggregations.md +330 -0
  107. package/library/snippets/excel-formulas/dates-and-times.md +361 -0
  108. package/library/snippets/excel-formulas/dynamic-arrays.md +314 -0
  109. package/library/snippets/excel-formulas/lookups.md +169 -0
  110. package/library/snippets/excel-formulas/text-functions.md +363 -0
  111. package/library/snippets/governance/naming-conventions.md +97 -0
  112. package/library/snippets/governance/review-checklists.md +107 -0
  113. package/library/snippets/power-query/README.md +389 -0
  114. package/library/snippets/power-query/api-integration.md +707 -0
  115. package/library/snippets/power-query/connections.md +434 -0
  116. package/library/snippets/power-query/data-cleaning.md +298 -0
  117. package/library/snippets/power-query/error-handling.md +526 -0
  118. package/library/snippets/power-query/parameters.md +350 -0
  119. package/library/snippets/power-query/performance.md +506 -0
  120. package/library/snippets/power-query/transformations.md +330 -0
  121. package/library/snippets/report-design/accessibility.md +78 -0
  122. package/library/snippets/report-design/chart-selection.md +54 -0
  123. package/library/snippets/report-design/layout-patterns.md +87 -0
  124. package/library/templates/data-models/README.md +93 -0
  125. package/library/templates/data-models/finance-model.md +627 -0
  126. package/library/templates/data-models/retail-star-schema.md +473 -0
  127. package/library/templates/excel/README.md +83 -0
  128. package/library/templates/excel/budget-tracker.md +432 -0
  129. package/library/templates/excel/data-entry-form.md +533 -0
  130. package/library/templates/power-bi/README.md +72 -0
  131. package/library/templates/power-bi/finance-report.md +449 -0
  132. package/library/templates/power-bi/kpi-scorecard.md +461 -0
  133. package/library/templates/power-bi/sales-dashboard.md +281 -0
  134. package/library/themes/excel/README.md +436 -0
  135. package/library/themes/power-bi/README.md +271 -0
  136. package/library/themes/power-bi/accessible.json +307 -0
  137. package/library/themes/power-bi/bi-superpowers-default.json +858 -0
  138. package/library/themes/power-bi/corporate-blue.json +291 -0
  139. package/library/themes/power-bi/dark-mode.json +291 -0
  140. package/library/themes/power-bi/minimal.json +292 -0
  141. package/library/themes/power-bi/print-friendly.json +309 -0
  142. package/package.json +93 -0
  143. package/skills/contributions/SKILL.md +267 -0
  144. package/skills/data-model-design/SKILL.md +470 -0
  145. package/skills/data-modeling/SKILL.md +254 -0
  146. package/skills/data-quality/SKILL.md +664 -0
  147. package/skills/dax/SKILL.md +708 -0
  148. package/skills/dax-doctor/SKILL.md +250 -0
  149. package/skills/dax-udf/SKILL.md +489 -0
  150. package/skills/deployment/SKILL.md +320 -0
  151. package/skills/excel-formulas/SKILL.md +463 -0
  152. package/skills/fabric-scripts/SKILL.md +454 -0
  153. package/skills/fast-standard/SKILL.md +509 -0
  154. package/skills/governance/SKILL.md +205 -0
  155. package/skills/migration-assistant/SKILL.md +292 -0
  156. package/skills/model-documenter/SKILL.md +244 -0
  157. package/skills/pbi-connect/SKILL.md +241 -0
  158. package/skills/power-query/SKILL.md +406 -0
  159. package/skills/project-kickoff/SKILL.md +907 -0
  160. package/skills/query-performance/SKILL.md +480 -0
  161. package/skills/report-design/SKILL.md +207 -0
  162. package/skills/report-layout/SKILL.md +298 -0
  163. package/skills/rls-design/SKILL.md +535 -0
  164. package/skills/semantic-model/SKILL.md +237 -0
  165. package/skills/testing-validation/SKILL.md +643 -0
  166. package/skills/theme-tweaker/SKILL.md +626 -0
  167. package/src/content/base.md +237 -0
  168. package/src/content/mcp-requirements.json +69 -0
  169. package/src/content/routing.md +203 -0
  170. package/src/content/skills/contributions.md +259 -0
  171. package/src/content/skills/data-model-design.md +462 -0
  172. package/src/content/skills/data-modeling.md +246 -0
  173. package/src/content/skills/data-quality.md +656 -0
  174. package/src/content/skills/dax-doctor.md +242 -0
  175. package/src/content/skills/dax-udf.md +481 -0
  176. package/src/content/skills/dax.md +700 -0
  177. package/src/content/skills/deployment.md +312 -0
  178. package/src/content/skills/excel-formulas.md +455 -0
  179. package/src/content/skills/fabric-scripts.md +446 -0
  180. package/src/content/skills/fast-standard.md +501 -0
  181. package/src/content/skills/governance.md +197 -0
  182. package/src/content/skills/migration-assistant.md +284 -0
  183. package/src/content/skills/model-documenter.md +236 -0
  184. package/src/content/skills/pbi-connect.md +233 -0
  185. package/src/content/skills/power-query.md +398 -0
  186. package/src/content/skills/project-kickoff.md +899 -0
  187. package/src/content/skills/query-performance.md +472 -0
  188. package/src/content/skills/report-design.md +199 -0
  189. package/src/content/skills/report-layout.md +290 -0
  190. package/src/content/skills/rls-design.md +527 -0
  191. package/src/content/skills/semantic-model.md +229 -0
  192. package/src/content/skills/testing-validation.md +635 -0
  193. package/src/content/skills/theme-tweaker.md +618 -0
@@ -0,0 +1,533 @@
1
+ # Data Entry Form Template
2
+
3
+ ## Overview
4
+
5
+ A structured Excel workbook for standardized data collection with validation, error prevention, and automated data processing. Ideal for surveys, inventory tracking, order entry, or any repetitive data input scenario.
6
+
7
+ ---
8
+
9
+ ## Target Audience
10
+
11
+ - Data Entry Operators
12
+ - Field Researchers
13
+ - Inventory Managers
14
+ - Sales Representatives
15
+ - HR Administrators
16
+
17
+ ---
18
+
19
+ ## Workbook Structure
20
+
21
+ ### Sheet 1: Data Entry Form
22
+
23
+ **Purpose:** User-friendly input interface
24
+
25
+ | Section | Position | Content |
26
+ |---------|----------|---------|
27
+ | Header | A1:F3 | Form title, instructions, required fields indicator |
28
+ | Entry ID | A5:B5 | Auto-generated unique identifier |
29
+ | Date/Time | A6:B6 | Auto-populated current date/time |
30
+ | User | A7:B7 | Dropdown of authorized users |
31
+ | Form Fields | A9:F30 | Input fields with labels and validation |
32
+ | Submit Button | D32 | Macro button to process entry |
33
+ | Clear Button | E32 | Reset form to blank |
34
+ | Status | F32 | Submission confirmation |
35
+
36
+ ### Sheet 2: Data Table
37
+
38
+ **Purpose:** Structured storage of all entries
39
+
40
+ | Column | Header | Source |
41
+ |--------|--------|--------|
42
+ | A | EntryID | Auto-generated |
43
+ | B | SubmitDate | Timestamp |
44
+ | C | SubmittedBy | User selection |
45
+ | D+ | Field columns | Each form field has a column |
46
+ | Last | ValidationStatus | Pass/Fail indicator |
47
+
48
+ ### Sheet 3: Lookups
49
+
50
+ **Purpose:** Reference data for dropdowns and validation
51
+
52
+ | Table | Content |
53
+ |-------|---------|
54
+ | Users | Authorized user list |
55
+ | Categories | Product/service categories |
56
+ | Regions | Geographic regions |
57
+ | Status Options | Available status values |
58
+ | Custom Lists | Any other dropdown sources |
59
+
60
+ ### Sheet 4: Validation Rules
61
+
62
+ **Purpose:** Define business rules
63
+
64
+ | Column | Header | Example |
65
+ |--------|--------|---------|
66
+ | A | Field Name | "Email" |
67
+ | B | Validation Type | "Format" |
68
+ | C | Rule | "Contains @" |
69
+ | D | Error Message | "Please enter a valid email" |
70
+
71
+ ### Sheet 5: Settings
72
+
73
+ **Purpose:** Form configuration
74
+
75
+ | Setting | Value |
76
+ |---------|-------|
77
+ | Form Title | "Customer Intake Form" |
78
+ | Required Fields | List of mandatory fields |
79
+ | Auto-increment prefix | "ENT-" |
80
+ | Date format | "YYYY-MM-DD" |
81
+ | Email notifications | On/Off |
82
+
83
+ ---
84
+
85
+ ## Form Field Types
86
+
87
+ ### Text Input
88
+
89
+ ```
90
+ Label: [Customer Name]
91
+ Input Cell: Merged cells B10:D10
92
+ Validation: Text length > 0
93
+ Format: Proper case on exit
94
+ ```
95
+
96
+ ### Number Input
97
+
98
+ ```
99
+ Label: [Quantity]
100
+ Input Cell: B12
101
+ Validation: Whole number, >= 0
102
+ Format: #,##0
103
+ ```
104
+
105
+ ### Date Input
106
+
107
+ ```
108
+ Label: [Order Date]
109
+ Input Cell: B14
110
+ Validation: Date between StartDate and TODAY()
111
+ Format: YYYY-MM-DD
112
+ Default: =TODAY()
113
+ ```
114
+
115
+ ### Dropdown Selection
116
+
117
+ ```
118
+ Label: [Category]
119
+ Input Cell: B16
120
+ Validation: List from Lookups!Categories
121
+ Allow blank: No
122
+ ```
123
+
124
+ ### Dependent Dropdown
125
+
126
+ ```
127
+ Label: [Subcategory]
128
+ Input Cell: B18
129
+ Validation: List = INDIRECT(B16 & "_List")
130
+ Dependent on: Category selection
131
+ ```
132
+
133
+ ### Email Input
134
+
135
+ ```
136
+ Label: [Email Address]
137
+ Input Cell: B20
138
+ Validation: Custom formula checking for @ and .
139
+ Error: "Enter valid email format"
140
+ ```
141
+
142
+ ### Phone Input
143
+
144
+ ```
145
+ Label: [Phone Number]
146
+ Input Cell: B22
147
+ Validation: Text length = 10 or format XXX-XXX-XXXX
148
+ Format: Apply phone format on exit
149
+ ```
150
+
151
+ ### Multi-line Text
152
+
153
+ ```
154
+ Label: [Comments]
155
+ Input Cell: B24:D26 (merged)
156
+ Validation: Text length <= 500
157
+ Wrap text: Yes
158
+ ```
159
+
160
+ ### Checkbox (Yes/No)
161
+
162
+ ```
163
+ Label: [Opt-in for Newsletter]
164
+ Input Cell: B28
165
+ Validation: List "Yes,No"
166
+ Default: "No"
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Key Formulas
172
+
173
+ ### Auto-Generate Entry ID
174
+
175
+ ```excel
176
+ // In Entry ID cell
177
+ =Settings!Prefix & TEXT(COUNTA(DataTable[EntryID])+1, "00000")
178
+
179
+ // Example result: ENT-00042
180
+ ```
181
+
182
+ ### Auto-Populate Timestamp
183
+
184
+ ```excel
185
+ // In Date/Time cell (static on submit via macro)
186
+ =NOW()
187
+
188
+ // For display only (updates)
189
+ =TEXT(NOW(), "YYYY-MM-DD HH:MM:SS")
190
+ ```
191
+
192
+ ### Validation Check Formula
193
+
194
+ ```excel
195
+ // Check if all required fields are filled
196
+ =AND(
197
+ LEN(CustomerName) > 0,
198
+ LEN(Email) > 0,
199
+ ISNUMBER(Quantity),
200
+ Category <> ""
201
+ )
202
+
203
+ // Named as "AllFieldsValid"
204
+ ```
205
+
206
+ ### Email Validation
207
+
208
+ ```excel
209
+ =AND(
210
+ ISNUMBER(SEARCH("@", Email)),
211
+ ISNUMBER(SEARCH(".", Email, SEARCH("@", Email))),
212
+ LEN(Email) - LEN(SUBSTITUTE(Email, "@", "")) = 1
213
+ )
214
+ ```
215
+
216
+ ### Phone Validation
217
+
218
+ ```excel
219
+ // For 10-digit number
220
+ =AND(
221
+ LEN(SUBSTITUTE(SUBSTITUTE(Phone, "-", ""), " ", "")) = 10,
222
+ ISNUMBER(SUBSTITUTE(SUBSTITUTE(Phone, "-", ""), " ", "") + 0)
223
+ )
224
+ ```
225
+
226
+ ### Dependent Dropdown Source
227
+
228
+ ```excel
229
+ // INDIRECT for dependent list
230
+ =INDIRECT(CategoryCell & "SubList")
231
+
232
+ // Or using FILTER (365)
233
+ =FILTER(Lookups[Subcategory], Lookups[Category] = CategoryCell)
234
+ ```
235
+
236
+ ### Duplicate Check
237
+
238
+ ```excel
239
+ // Check if value already exists in data table
240
+ =IF(
241
+ COUNTIF(DataTable[Email], EmailInput) > 0,
242
+ "Duplicate entry detected",
243
+ "OK"
244
+ )
245
+ ```
246
+
247
+ ---
248
+
249
+ ## Data Validation Rules
250
+
251
+ ### Required Field Indicator
252
+
253
+ ```
254
+ Cell format: Bold label with asterisk (*)
255
+ Conditional format: Red border if empty on submit attempt
256
+ ```
257
+
258
+ ### Validation Settings by Type
259
+
260
+ | Field Type | Validation | Settings |
261
+ |------------|------------|----------|
262
+ | Text | Text length | Min: 1, Max: 100 |
263
+ | Number | Whole number | Between 0 and 999999 |
264
+ | Currency | Decimal | >= 0 |
265
+ | Date | Date | Between StartDate and EndDate |
266
+ | Dropdown | List | Source: named range |
267
+ | Email | Custom | =EmailValidationFormula |
268
+ | Phone | Custom | =PhoneValidationFormula |
269
+
270
+ ### Error Alert Configuration
271
+
272
+ ```
273
+ Style: Stop (prevents invalid entry)
274
+ Title: "Invalid Input"
275
+ Message: Field-specific error message
276
+ ```
277
+
278
+ ### Input Message Configuration
279
+
280
+ ```
281
+ Show input message: Yes
282
+ Title: Field name
283
+ Message: "Enter [description]. Format: [example]"
284
+ ```
285
+
286
+ ---
287
+
288
+ ## Conditional Formatting
289
+
290
+ ### Required Fields
291
+
292
+ ```
293
+ Apply to: All required input cells
294
+ Rule: =LEN(CellRef) = 0
295
+ Format: Light red fill
296
+ ```
297
+
298
+ ### Valid Entry Indicator
299
+
300
+ ```
301
+ Apply to: Entry validation cell
302
+ Rule: =AllFieldsValid = TRUE
303
+ Format: Green checkmark icon
304
+ ```
305
+
306
+ ### Error Highlighting
307
+
308
+ ```
309
+ Apply to: Field with error
310
+ Rule: Custom formula based on validation
311
+ Format: Red border, light red fill
312
+ ```
313
+
314
+ ### Submitted Entries
315
+
316
+ ```
317
+ Apply to: Data table rows
318
+ Rule: =SubmitDate <> ""
319
+ Format: Light gray fill (indicates processed)
320
+ ```
321
+
322
+ ---
323
+
324
+ ## VBA Macros (Optional)
325
+
326
+ ### Submit Entry Macro
327
+
328
+ ```vba
329
+ Sub SubmitEntry()
330
+ ' Validate all fields
331
+ If Not Range("AllFieldsValid").Value Then
332
+ MsgBox "Please complete all required fields.", vbExclamation
333
+ Exit Sub
334
+ End If
335
+
336
+ ' Find next empty row in data table
337
+ Dim nextRow As Long
338
+ nextRow = Sheets("DataTable").Cells(Rows.Count, 1).End(xlUp).Row + 1
339
+
340
+ ' Copy values to data table
341
+ With Sheets("DataTable")
342
+ .Cells(nextRow, 1).Value = Range("EntryID").Value
343
+ .Cells(nextRow, 2).Value = Now()
344
+ .Cells(nextRow, 3).Value = Range("UserName").Value
345
+ ' ... copy all form fields
346
+ End With
347
+
348
+ ' Clear form
349
+ Call ClearForm
350
+
351
+ ' Confirmation
352
+ Range("Status").Value = "Entry submitted successfully!"
353
+ End Sub
354
+ ```
355
+
356
+ ### Clear Form Macro
357
+
358
+ ```vba
359
+ Sub ClearForm()
360
+ ' Clear all input cells
361
+ Range("CustomerName").ClearContents
362
+ Range("Email").ClearContents
363
+ Range("Phone").ClearContents
364
+ Range("Category").ClearContents
365
+ ' ... clear all fields
366
+
367
+ ' Reset Entry ID
368
+ Range("EntryID").Calculate
369
+
370
+ ' Clear status
371
+ Range("Status").ClearContents
372
+
373
+ ' Set focus to first field
374
+ Range("CustomerName").Select
375
+ End Sub
376
+ ```
377
+
378
+ ### Auto-format on Entry
379
+
380
+ ```vba
381
+ Private Sub Worksheet_Change(ByVal Target As Range)
382
+ ' Proper case for name fields
383
+ If Not Intersect(Target, Range("CustomerName")) Is Nothing Then
384
+ Application.EnableEvents = False
385
+ Target.Value = WorksheetFunction.Proper(Target.Value)
386
+ Application.EnableEvents = True
387
+ End If
388
+
389
+ ' Format phone number
390
+ If Not Intersect(Target, Range("Phone")) Is Nothing Then
391
+ Application.EnableEvents = False
392
+ Dim phone As String
393
+ phone = Replace(Replace(Target.Value, "-", ""), " ", "")
394
+ If Len(phone) = 10 Then
395
+ Target.Value = Left(phone, 3) & "-" & Mid(phone, 4, 3) & "-" & Right(phone, 4)
396
+ End If
397
+ Application.EnableEvents = True
398
+ End If
399
+ End Sub
400
+ ```
401
+
402
+ ---
403
+
404
+ ## Form Layout Best Practices
405
+
406
+ ### Visual Hierarchy
407
+
408
+ ```
409
+ +------------------------------------------+
410
+ | FORM TITLE [Logo] |
411
+ | Instructions and required fields note |
412
+ +------------------------------------------+
413
+ | Entry ID: ENT-00042 Date: 2024-01-15 |
414
+ +------------------------------------------+
415
+ | |
416
+ | * Customer Name: [___________________] |
417
+ | |
418
+ | * Email: [___________________] |
419
+ | |
420
+ | Phone: [___________________] |
421
+ | |
422
+ | * Category: [Dropdown_______v] |
423
+ | |
424
+ | Subcategory: [Dependent_____v] |
425
+ | |
426
+ | Comments: |
427
+ | [________________________________] |
428
+ | [________________________________] |
429
+ | |
430
+ | [Clear] [Submit] |
431
+ | |
432
+ | Status: Ready for entry |
433
+ +------------------------------------------+
434
+ * Required fields
435
+ ```
436
+
437
+ ### Cell Formatting
438
+
439
+ | Element | Format |
440
+ |---------|--------|
441
+ | Labels | Bold, right-aligned, gray background |
442
+ | Input cells | White background, border |
443
+ | Required indicator (*) | Red color |
444
+ | Buttons | Centered, button formatting |
445
+ | Status | Italic, color-coded by result |
446
+
447
+ ---
448
+
449
+ ## Protection and Security
450
+
451
+ ### Sheet Protection Settings
452
+
453
+ ```
454
+ Protected elements:
455
+ - Labels and headers
456
+ - Formulas
457
+ - Structure (rows/columns)
458
+ - Objects (buttons, shapes)
459
+
460
+ Unprotected:
461
+ - Input cells only
462
+ - Allow cell selection
463
+ ```
464
+
465
+ ### Workbook Protection
466
+
467
+ ```
468
+ - Protect workbook structure
469
+ - Prevent sheet deletion/addition
470
+ - Password protect VBA code
471
+ ```
472
+
473
+ ### Data Protection
474
+
475
+ ```
476
+ - Regular backup to secondary location
477
+ - Version control for template changes
478
+ - Audit trail of submissions (timestamp + user)
479
+ ```
480
+
481
+ ---
482
+
483
+ ## Error Prevention
484
+
485
+ ### Input Masks
486
+
487
+ Use custom number formats:
488
+ ```
489
+ Phone: @@@-@@@-@@@@
490
+ Date: YYYY-MM-DD
491
+ Currency: $#,##0.00
492
+ ```
493
+
494
+ ### Helper Text
495
+
496
+ Show in adjacent cell or as comment:
497
+ ```
498
+ "Format: FirstName LastName"
499
+ "Example: john.doe@company.com"
500
+ ```
501
+
502
+ ### Real-time Feedback
503
+
504
+ Adjacent cell with IFERROR validation:
505
+ ```excel
506
+ =IF(EmailValidation, UNICHAR(10004), UNICHAR(10006))
507
+ // Shows checkmark or X
508
+ ```
509
+
510
+ ---
511
+
512
+ ## Implementation Checklist
513
+
514
+ - [ ] Define all form fields and data types
515
+ - [ ] Create Lookups sheet with reference data
516
+ - [ ] Build form layout with proper formatting
517
+ - [ ] Configure data validation for each field
518
+ - [ ] Set up conditional formatting for errors
519
+ - [ ] Create Data Table with headers matching form
520
+ - [ ] Build validation formulas
521
+ - [ ] (Optional) Write VBA macros for Submit/Clear
522
+ - [ ] Apply sheet and workbook protection
523
+ - [ ] Test with sample data including edge cases
524
+ - [ ] Document instructions for users
525
+ - [ ] Create user training materials
526
+
527
+ ---
528
+
529
+ ## Related Resources
530
+
531
+ - [Text Functions](../../snippets/excel-formulas/text-functions.md)
532
+ - [Data Validation Best Practices](../../snippets/excel-formulas/lookups.md)
533
+ - [Dynamic Arrays for Dependent Dropdowns](../../snippets/excel-formulas/dynamic-arrays.md)
@@ -0,0 +1,72 @@
1
+ # Power BI Templates
2
+
3
+ Comprehensive dashboard specifications and implementation guides for common Power BI use cases.
4
+
5
+ ## Available Templates
6
+
7
+ | Template | Description | Complexity |
8
+ |----------|-------------|------------|
9
+ | [Sales Dashboard](./sales-dashboard.md) | Revenue tracking, product analysis, customer insights | Medium |
10
+ | [Finance Report](./finance-report.md) | P&L, budget variance, financial KPIs | High |
11
+ | [KPI Scorecard](./kpi-scorecard.md) | Balanced scorecard, strategic metrics tracking | Medium |
12
+
13
+ ## What's Included
14
+
15
+ Each template specification includes:
16
+
17
+ - **Data Requirements** - Required and optional tables, columns, relationships
18
+ - **Recommended Measures** - Pre-built DAX formulas ready to copy
19
+ - **Page Structure** - Visual layout and content recommendations
20
+ - **Visual Specifications** - Colors, formatting, conditional formatting rules
21
+ - **Interactivity** - Cross-filtering, drillthrough, bookmarks
22
+ - **Implementation Checklist** - Step-by-step verification
23
+
24
+ ## How to Use
25
+
26
+ 1. **Review the specification** - Understand data requirements and measures needed
27
+ 2. **Prepare your data model** - Ensure tables and relationships match the template
28
+ 3. **Copy DAX measures** - Implement recommended measures in your model
29
+ 4. **Build pages** - Follow the visual layout specifications
30
+ 5. **Apply formatting** - Use colors and conditional formatting as specified
31
+ 6. **Test interactions** - Verify cross-filtering and drillthrough work correctly
32
+
33
+ ## Template Categories
34
+
35
+ ### Operational
36
+ - Sales Dashboard - Day-to-day sales operations
37
+
38
+ ### Financial
39
+ - Finance Report - Month-end financial reporting
40
+ - KPI Scorecard - Strategic performance monitoring
41
+
42
+ ### Coming Soon
43
+ - HR Analytics - Workforce metrics and retention
44
+ - Supply Chain - Inventory and logistics
45
+ - Marketing Analytics - Campaign performance
46
+
47
+ ## Customization
48
+
49
+ These templates are starting points. Customize based on:
50
+
51
+ - Your specific KPIs and metrics
52
+ - Industry terminology
53
+ - Corporate branding and colors
54
+ - Data availability
55
+ - User preferences
56
+
57
+ ## Related Resources
58
+
59
+ - [Power BI Themes](../../styles/power-bi/) - Ready-to-use JSON themes
60
+ - [DAX Snippets](../../snippets/dax/) - Formula patterns
61
+ - [Data Models](../data-models/) - Star schema templates
62
+ - [Project Kickoff Skill](../../skills/project-kickoff/) - Interactive project planning
63
+
64
+ ## Contributing
65
+
66
+ To contribute a new template:
67
+
68
+ 1. Use an existing template as a reference for structure
69
+ 2. Include all required sections (Data, Measures, Pages, Visuals)
70
+ 3. Provide working DAX code examples
71
+ 4. Test with sample data before submitting
72
+ 5. Submit a PR with the template markdown file