retold-data-service 2.1.1 → 2.1.5

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 (89) hide show
  1. package/BUILDING-AND-PUBLISHING.md +2 -2
  2. package/Dockerfile +1 -1
  3. package/README.md +12 -27
  4. package/build-all.js +66 -0
  5. package/diagrams/architecture.excalidraw +2966 -0
  6. package/diagrams/architecture.mmd +17 -0
  7. package/diagrams/architecture.svg +2 -0
  8. package/docs/README.md +12 -12
  9. package/docs/_brand.json +18 -0
  10. package/docs/_cover.md +1 -1
  11. package/docs/_topbar.md +1 -1
  12. package/docs/_version.json +3 -3
  13. package/docs/api/reference.md +8 -8
  14. package/docs/architecture.md +6 -84
  15. package/docs/diagrams/component-diagram.excalidraw +2807 -0
  16. package/docs/diagrams/component-diagram.mmd +14 -0
  17. package/docs/diagrams/component-diagram.svg +2 -0
  18. package/docs/diagrams/component-stack.excalidraw +1169 -0
  19. package/docs/diagrams/component-stack.mmd +6 -0
  20. package/docs/diagrams/component-stack.svg +2 -0
  21. package/docs/diagrams/hook-execution-order.excalidraw +3230 -0
  22. package/docs/diagrams/hook-execution-order.mmd +19 -0
  23. package/docs/diagrams/hook-execution-order.svg +2 -0
  24. package/docs/diagrams/initialization-flow.excalidraw +1800 -0
  25. package/docs/diagrams/initialization-flow.mmd +22 -0
  26. package/docs/diagrams/initialization-flow.svg +2 -0
  27. package/docs/index.html +6 -7
  28. package/docs/lifecycle-hooks.md +2 -21
  29. package/docs/retold-catalog.json +141 -141
  30. package/docs/retold-keyword-index.json +6818 -1608
  31. package/package.json +130 -96
  32. package/source/services/RetoldDataService-Brand.js +13 -0
  33. package/source/services/comprehension-loader/pict-app/Pict-Application-ComprehensionLoader.js +65 -15
  34. package/source/services/comprehension-loader/pict-app/providers/Pict-Provider-ComprehensionLoader.js +2 -2
  35. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Layout.js +68 -114
  36. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Load.js +29 -29
  37. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Schema.js +3 -3
  38. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Session.js +2 -2
  39. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-SettingsPanel.js +62 -0
  40. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Shell.js +142 -0
  41. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Source.js +7 -7
  42. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-StatusBar.js +125 -0
  43. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-StatusDetail.js +89 -0
  44. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-TopBar-Nav.js +42 -0
  45. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-TopBar-User.js +48 -0
  46. package/source/services/comprehension-loader/web/comprehension-loader.js +5475 -6243
  47. package/source/services/comprehension-loader/web/comprehension-loader.js.map +1 -1
  48. package/source/services/comprehension-loader/web/comprehension-loader.min.js +75 -1
  49. package/source/services/comprehension-loader/web/comprehension-loader.min.js.map +1 -1
  50. package/source/services/comprehension-loader/web/favicons/favicon-dark.svg +13 -0
  51. package/source/services/comprehension-loader/web/favicons/favicon-light.svg +13 -0
  52. package/source/services/comprehension-loader/web/favicons/favicon.svg +13 -0
  53. package/source/services/comprehension-loader/web/index.html +3 -0
  54. package/source/services/comprehension-loader/web/pict.min.js +12 -0
  55. package/source/services/data-cloner/DataCloner-Command-Headless.js +2 -1
  56. package/source/services/data-cloner/DataCloner-Command-Sync.js +110 -75
  57. package/source/services/data-cloner/pict-app/Pict-Application-DataCloner.js +70 -47
  58. package/source/services/data-cloner/pict-app/providers/Pict-Provider-DataCloner.js +3 -3
  59. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Connection.js +1 -1
  60. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Deploy.js +5 -5
  61. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Export.js +11 -11
  62. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Layout.js +89 -135
  63. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Schema.js +3 -3
  64. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Session.js +2 -2
  65. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-SettingsPanel.js +61 -0
  66. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Shell.js +136 -0
  67. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-StatusBar.js +117 -0
  68. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-StatusDetail.js +81 -0
  69. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Sync.js +38 -38
  70. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-TopBar-Nav.js +42 -0
  71. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-TopBar-User.js +48 -0
  72. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-ViewData.js +5 -5
  73. package/source/services/data-cloner/web/data-cloner.js +5855 -8067
  74. package/source/services/data-cloner/web/data-cloner.js.map +1 -1
  75. package/source/services/data-cloner/web/data-cloner.min.js +75 -1
  76. package/source/services/data-cloner/web/data-cloner.min.js.map +1 -1
  77. package/source/services/data-cloner/web/favicons/favicon-dark.svg +13 -0
  78. package/source/services/data-cloner/web/favicons/favicon-light.svg +13 -0
  79. package/source/services/data-cloner/web/favicons/favicon.svg +13 -0
  80. package/source/services/data-cloner/web/favicons/favicons/favicon-dark.svg +13 -0
  81. package/source/services/data-cloner/web/favicons/favicons/favicon-light.svg +13 -0
  82. package/source/services/data-cloner/web/favicons/favicons/favicon.svg +13 -0
  83. package/source/services/data-cloner/web/index.html +3 -0
  84. package/source/services/data-cloner/web/pict.min.js +12 -0
  85. package/test/Bundles_smoke_tests.js +43 -0
  86. package/test/ComprehensionLoader_smoke_tests.js +95 -0
  87. package/test/DataCloner-RuntimeOverrides_tests.js +344 -0
  88. package/test/DataCloner_smoke_tests.js +87 -0
  89. package/docs/css/docuserve.css +0 -327
package/package.json CHANGED
@@ -1,98 +1,132 @@
1
1
  {
2
- "name": "retold-data-service",
3
- "version": "2.1.1",
4
- "description": "Serve up a whole model!",
5
- "main": "source/Retold-Data-Service.js",
6
- "bin": {
7
- "retold-data-service-clone": "bin/retold-data-service-clone.js"
8
- },
9
- "scripts": {
10
- "start": "node bin/retold-data-service-clone.js",
11
- "coverage": "npx quack coverage",
12
- "test": "npx quack test",
13
- "build": "npx quack build",
14
- "prepublishOnly": "npx quack build",
15
- "build-test-model": "cd test && npx stricture -i model/ddl/BookStore.ddl",
16
- "docker-dev-build": "docker build ./ -f Dockerfile_LUXURYCode -t retold-data-service-image:local",
17
- "docker-dev-run": "docker run -it -d --name retold-data-service-dev -p 44444:8080 -p 43306:3306 -p 48086:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/retold-data-service\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" retold-data-service-image:local",
18
- "docker-dev-shell": "docker exec -it retold-data-service-dev /bin/bash",
19
- "docker-service-build": "docker build ./ -f Dockerfile_Service -t retold-data-service-server-image:local",
20
- "docker-service-run-test": "docker run -it --init -d --name retold-data-service -p 8086:8086 -p 43306:3306 -v \"$(pwd):/retold-data-service:z\" -u \"$(id -u):$(id -g)\" retold-data-service-server-image:local",
21
- "docker-service-run": "docker run -it --init -d --name retold-data-service -p 8086:8086 -p 43306:3306 -v \"$(pwd):/retold-data-service:z\" retold-data-service-server-image:local",
22
- "docker-service-shell": "docker exec -it retold-data-service /bin/bash",
23
- "test:integration": "node test/run-integration-tests.js",
24
- "test:integration:no-browser": "node test/run-integration-tests.js --skip-puppeteer",
25
- "test:all": "npx quack test && node test/run-integration-tests.js --skip-puppeteer",
26
- "postversion": "npx quack release postversion",
27
- "postpublish": "npx quack release postpublish",
28
- "publish:docker": "npx quack release publish --image",
29
- "release:patch": "npx quack release patch",
30
- "release:minor": "npx quack release minor",
31
- "release:major": "npx quack release major",
32
- "release:patch:image": "npx quack release patch --image",
33
- "release:minor:image": "npx quack release minor --image",
34
- "release:major:image": "npx quack release major --image"
35
- },
36
- "mocha": {
37
- "spec": "test/RetoldDataService_tests.js",
38
- "diff": true,
39
- "extension": [
40
- "js"
41
- ],
42
- "package": "./package.json",
43
- "reporter": "spec",
44
- "slow": "75",
45
- "timeout": "5000",
46
- "ui": "tdd",
47
- "watch-files": [
48
- "source/**/*.js",
49
- "test/**/*.js"
50
- ],
51
- "watch-ignore": [
52
- "lib/vendor"
53
- ]
54
- },
55
- "repository": {
56
- "type": "git",
57
- "url": "https://github.com/stevenvelozo/retold-data-service.git"
58
- },
59
- "keywords": [
60
- "entity",
61
- "behavior",
62
- "api"
63
- ],
64
- "author": "Steven Velozo <steven@velozo.com> (http://velozo.com/)",
65
- "license": "MIT",
66
- "bugs": {
67
- "url": "https://github.com/stevenvelozo/retold-data-service/issues"
68
- },
69
- "homepage": "https://github.com/stevenvelozo/retold-data-service",
70
- "devDependencies": {
71
- "meadow-connection-sqlite": "^1.0.19",
72
- "pict-docuserve": "^0.1.5",
73
- "puppeteer": "^24.40.0",
74
- "quackage": "^1.2.0",
75
- "stricture": "^4.0.2",
76
- "supertest": "^7.2.2"
77
- },
78
- "dependencies": {
79
- "bibliograph": "^0.1.6",
80
- "fable": "^3.1.71",
81
- "fable-serviceproviderbase": "^3.0.19",
82
- "meadow": "^2.0.37",
83
- "meadow-connection-manager": "^1.1.0",
84
- "pict-section-connection-form": "^0.0.1",
85
- "meadow-connection-mysql": "^1.0.18",
86
- "meadow-endpoints": "^4.0.17",
87
- "meadow-integration": "^1.0.38",
88
- "meadow-migrationmanager": "^0.0.14",
89
- "orator": "^6.1.1",
90
- "orator-http-proxy": "^1.0.5",
91
- "orator-serviceserver-restify": "^2.0.10",
92
- "orator-static-server": "^2.1.3",
93
- "pict": "^1.0.365",
94
- "pict-section-histogram": "^1.0.0",
95
- "pict-sessionmanager": "^1.0.2",
96
- "stricture": "^4.0.2"
97
- }
2
+ "name": "retold-data-service",
3
+ "version": "2.1.5",
4
+ "description": "Serve up a whole model!",
5
+ "main": "source/Retold-Data-Service.js",
6
+ "bin": {
7
+ "retold-data-service-clone": "bin/retold-data-service-clone.js"
8
+ },
9
+ "scripts": {
10
+ "start": "node bin/retold-data-service-clone.js",
11
+ "coverage": "npx quack coverage",
12
+ "test": "npx quack test",
13
+ "brand": "node node_modules/pict-section-theme/bin/pict-section-theme-brand.js --manifest ../../../Retold-Modules-Manifest.json --module retold-data-service --favicons source/services/comprehension-loader/web/favicons && cp -r source/services/comprehension-loader/web/favicons source/services/data-cloner/web/favicons",
14
+ "build": "node build-all.js",
15
+ "build:cloner": "npx quack build",
16
+ "build:loader": "node -e \"require('fs').writeFileSync('.quackage.json', require('fs').readFileSync('.quackage-comprehension-loader.json', 'utf8'))\" && npx quack build",
17
+ "prepublishOnly": "npm run build",
18
+ "build-test-model": "cd test && npx stricture -i model/ddl/BookStore.ddl",
19
+ "docker-dev-build": "docker build ./ -f Dockerfile_LUXURYCode -t retold-data-service-image:local",
20
+ "docker-dev-run": "docker run -it -d --name retold-data-service-dev -p 44444:8080 -p 43306:3306 -p 48086:8086 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/retold-data-service\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" retold-data-service-image:local",
21
+ "docker-dev-shell": "docker exec -it retold-data-service-dev /bin/bash",
22
+ "docker-service-build": "docker build ./ -f Dockerfile_Service -t retold-data-service-server-image:local",
23
+ "docker-service-run-test": "docker run -it --init -d --name retold-data-service -p 8086:8086 -p 43306:3306 -v \"$(pwd):/retold-data-service:z\" -u \"$(id -u):$(id -g)\" retold-data-service-server-image:local",
24
+ "docker-service-run": "docker run -it --init -d --name retold-data-service -p 8086:8086 -p 43306:3306 -v \"$(pwd):/retold-data-service:z\" retold-data-service-server-image:local",
25
+ "docker-service-shell": "docker exec -it retold-data-service /bin/bash",
26
+ "test:integration": "node test/run-integration-tests.js",
27
+ "test:integration:no-browser": "node test/run-integration-tests.js --skip-puppeteer",
28
+ "test:all": "npx quack test && node test/run-integration-tests.js --skip-puppeteer",
29
+ "postversion": "npx quack release postversion",
30
+ "postpublish": "npx quack release postpublish",
31
+ "publish:docker": "npx quack release publish --image",
32
+ "release:patch": "npx quack release patch",
33
+ "release:minor": "npx quack release minor",
34
+ "release:major": "npx quack release major",
35
+ "release:patch:image": "npx quack release patch --image",
36
+ "release:minor:image": "npx quack release minor --image",
37
+ "release:major:image": "npx quack release major --image"
38
+ },
39
+ "mocha": {
40
+ "spec": [
41
+ "test/RetoldDataService_tests.js",
42
+ "test/Bundles_smoke_tests.js",
43
+ "test/ComprehensionLoader_smoke_tests.js",
44
+ "test/DataCloner_smoke_tests.js"
45
+ ],
46
+ "diff": true,
47
+ "extension": [
48
+ "js"
49
+ ],
50
+ "package": "./package.json",
51
+ "reporter": "spec",
52
+ "slow": "75",
53
+ "timeout": "5000",
54
+ "ui": "tdd",
55
+ "watch-files": [
56
+ "source/**/*.js",
57
+ "test/**/*.js"
58
+ ],
59
+ "watch-ignore": [
60
+ "lib/vendor"
61
+ ]
62
+ },
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "https://github.com/fable-retold/retold-data-service.git"
66
+ },
67
+ "keywords": [
68
+ "entity",
69
+ "behavior",
70
+ "api"
71
+ ],
72
+ "author": "Steven Velozo <steven@velozo.com> (http://velozo.com/)",
73
+ "license": "MIT",
74
+ "bugs": {
75
+ "url": "https://github.com/fable-retold/retold-data-service/issues"
76
+ },
77
+ "homepage": "https://github.com/fable-retold/retold-data-service",
78
+ "devDependencies": {
79
+ "chai": "^4.5.0",
80
+ "jsdom": "^25.0.1",
81
+ "meadow-connection-sqlite": "^1.0.20",
82
+ "mocha": "^11.0.1",
83
+ "pict-docuserve": "^1.4.19",
84
+ "puppeteer": "^24.40.0",
85
+ "quackage": "^1.3.0",
86
+ "stricture": "^4.0.6",
87
+ "supertest": "^7.2.2"
88
+ },
89
+ "dependencies": {
90
+ "bibliograph": "^1.0.0",
91
+ "fable": "^3.1.75",
92
+ "fable-serviceproviderbase": "^3.0.19",
93
+ "meadow": "^2.0.43",
94
+ "meadow-connection-manager": "^1.1.5",
95
+ "meadow-connection-mysql": "^1.0.19",
96
+ "meadow-endpoints": "^4.0.22",
97
+ "meadow-integration": "^1.0.42",
98
+ "meadow-migrationmanager": "^1.0.4",
99
+ "orator": "^6.1.2",
100
+ "orator-http-proxy": "^1.0.5",
101
+ "orator-serviceserver-restify": "^2.0.11",
102
+ "orator-static-server": "^2.1.4",
103
+ "pict": "^1.0.372",
104
+ "pict-provider-theme": "^1.1.2",
105
+ "pict-section-connection-form": "^1.0.0",
106
+ "pict-section-histogram": "^1.0.1",
107
+ "pict-section-modal": "^1.1.4",
108
+ "pict-section-theme": "^1.1.1",
109
+ "pict-sessionmanager": "^1.0.2",
110
+ "stricture": "^4.0.6"
111
+ },
112
+ "retold": {
113
+ "brand": {
114
+ "Hash": "retold-data-service",
115
+ "Name": "Retold Data Service",
116
+ "Tagline": "Schema-driven data movement and comprehension",
117
+ "Palette": "ocean",
118
+ "Icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"frame-retold-data-service-filled-light\">\n\t\t\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\" fill=\"#23a6c7\"/>\n\t\t<g clip-path=\"url(#frame-retold-data-service-filled-light)\"><rect x=\"20\" y=\"20\" width=\"56\" height=\"56\" rx=\"8\" fill=\"rgba(255,255,255,0.18)\"/>\n\t\t\t\t\t<path d=\"M 48 30 L 70 48 L 48 66 L 26 48 Z\" fill=\"#e36b59\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"28\" font-weight=\"600\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">RDS</text>\n\t</svg>",
119
+ "IconType": "svg",
120
+ "Favicon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-retold-data-service-light\">\n\t\t\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\" fill=\"#23a6c7\"/>\n\t\t<g clip-path=\"url(#fav-retold-data-service-light)\"><rect x=\"16\" y=\"16\" width=\"64\" height=\"64\" rx=\"10\" fill=\"rgba(255,255,255,0.22)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">R</text>\n\t</svg>",
121
+ "FaviconDark": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-retold-data-service-dark\">\n\t\t\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\" fill=\"#67c6de\"/>\n\t\t<g clip-path=\"url(#fav-retold-data-service-dark)\"><rect x=\"16\" y=\"16\" width=\"64\" height=\"64\" rx=\"10\" fill=\"rgba(255,255,255,0.22)\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#101418\" letter-spacing=\"-1\">R</text>\n\t</svg>",
122
+ "Colors": {
123
+ "Primary": "#23a6c7",
124
+ "Secondary": "#e36b59",
125
+ "PrimaryLight": "#23a6c7",
126
+ "PrimaryDark": "#67c6de",
127
+ "SecondaryLight": "#e36b59",
128
+ "SecondaryDark": "#edb3aa"
129
+ }
130
+ }
131
+ }
98
132
  }
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ // Located at source/services/. Apps live one level deeper at
4
+ // source/services/<app>/pict-app/. The package.json is two levels up.
5
+ const tmpPackage = require('../../package.json');
6
+
7
+ if (!tmpPackage.retold || !tmpPackage.retold.brand)
8
+ {
9
+ throw new Error('retold-data-service: package.json is missing retold.brand — '
10
+ + 'run `npm run brand` (which calls pict-section-theme-brand) before building');
11
+ }
12
+
13
+ module.exports = tmpPackage.retold.brand;
@@ -2,28 +2,41 @@ const libPictApplication = require('pict-application');
2
2
 
3
3
  const libProvider = require('./providers/Pict-Provider-ComprehensionLoader.js');
4
4
 
5
- const libViewLayout = require('./views/PictView-ComprehensionLoader-Layout.js');
6
- const libViewSession = require('./views/PictView-ComprehensionLoader-Session.js');
7
- const libViewSchema = require('./views/PictView-ComprehensionLoader-Schema.js');
8
- const libViewSource = require('./views/PictView-ComprehensionLoader-Source.js');
9
- const libViewLoad = require('./views/PictView-ComprehensionLoader-Load.js');
5
+ const libViewLayout = require('./views/PictView-ComprehensionLoader-Layout.js');
6
+ const libViewSession = require('./views/PictView-ComprehensionLoader-Session.js');
7
+ const libViewSchema = require('./views/PictView-ComprehensionLoader-Schema.js');
8
+ const libViewSource = require('./views/PictView-ComprehensionLoader-Source.js');
9
+ const libViewLoad = require('./views/PictView-ComprehensionLoader-Load.js');
10
10
  const libViewHistogram = require('pict-section-histogram');
11
11
 
12
+ const libPictSectionModal = require('pict-section-modal');
13
+ const libPictSectionTheme = require('pict-section-theme');
14
+ const libBrand = require('../../RetoldDataService-Brand.js');
15
+
16
+ const libViewShell = require('./views/PictView-ComprehensionLoader-Shell.js');
17
+ const libViewTopBarNav = require('./views/PictView-ComprehensionLoader-TopBar-Nav.js');
18
+ const libViewTopBarUser = require('./views/PictView-ComprehensionLoader-TopBar-User.js');
19
+ const libViewStatusBar = require('./views/PictView-ComprehensionLoader-StatusBar.js');
20
+ const libViewStatusDetail = require('./views/PictView-ComprehensionLoader-StatusDetail.js');
21
+ const libViewSettings = require('./views/PictView-ComprehensionLoader-SettingsPanel.js');
22
+
12
23
  class ComprehensionLoaderApplication extends libPictApplication
13
24
  {
14
25
  constructor(pFable, pOptions, pServiceHash)
15
26
  {
16
27
  super(pFable, pOptions, pServiceHash);
17
28
 
18
- // Register provider
19
- this.pict.addProvider('ComprehensionLoader', libProvider.default_configuration, libProvider);
29
+ // 1. Modal section (provides shell + panels + modal API).
30
+ this.pict.addView('Pict-Section-Modal',
31
+ libPictSectionModal.default_configuration, libPictSectionModal);
20
32
 
21
- // Register views
22
- this.pict.addView('ComprehensionLoader-Layout', libViewLayout.default_configuration, libViewLayout);
33
+ // 2. Provider + existing section views.
34
+ this.pict.addProvider('ComprehensionLoader', libProvider.default_configuration, libProvider);
35
+ this.pict.addView('ComprehensionLoader-Layout', libViewLayout.default_configuration, libViewLayout);
23
36
  this.pict.addView('ComprehensionLoader-Session', libViewSession.default_configuration, libViewSession);
24
- this.pict.addView('ComprehensionLoader-Schema', libViewSchema.default_configuration, libViewSchema);
25
- this.pict.addView('ComprehensionLoader-Source', libViewSource.default_configuration, libViewSource);
26
- this.pict.addView('ComprehensionLoader-Load', libViewLoad.default_configuration, libViewLoad);
37
+ this.pict.addView('ComprehensionLoader-Schema', libViewSchema.default_configuration, libViewSchema);
38
+ this.pict.addView('ComprehensionLoader-Source', libViewSource.default_configuration, libViewSource);
39
+ this.pict.addView('ComprehensionLoader-Load', libViewLoad.default_configuration, libViewLoad);
27
40
  this.pict.addView('ComprehensionLoader-StatusHistogram',
28
41
  {
29
42
  ViewIdentifier: 'ComprehensionLoader-StatusHistogram',
@@ -36,9 +49,38 @@ class ComprehensionLoaderApplication extends libPictApplication
36
49
  ShowValues: false,
37
50
  ShowLabels: true,
38
51
  MaxBarSize: 80,
39
- BarColor: '#4a90d9',
52
+ BarColor: 'var(--theme-color-brand-primary, #4a90d9)',
40
53
  Bins: []
41
54
  }, libViewHistogram);
55
+
56
+ // 3. Shell host + slot views + status bar / detail + settings panel.
57
+ this.pict.addView('ComprehensionLoader-Shell',
58
+ libViewShell.default_configuration, libViewShell);
59
+ this.pict.addView('ComprehensionLoader-TopBar-Nav',
60
+ libViewTopBarNav.default_configuration, libViewTopBarNav);
61
+ this.pict.addView('ComprehensionLoader-TopBar-User',
62
+ libViewTopBarUser.default_configuration, libViewTopBarUser);
63
+ this.pict.addView('ComprehensionLoader-StatusBar',
64
+ libViewStatusBar.default_configuration, libViewStatusBar);
65
+ this.pict.addView('ComprehensionLoader-StatusDetail',
66
+ libViewStatusDetail.default_configuration, libViewStatusDetail);
67
+ this.pict.addView('ComprehensionLoader-SettingsPanel',
68
+ libViewSettings.default_configuration, libViewSettings);
69
+
70
+ // 4. Theme-Section provider — registered LAST so it can find the slot views.
71
+ this.pict.addProvider('Theme-Section',
72
+ {
73
+ ApplyDefault: 'pict-default',
74
+ DefaultMode: 'system',
75
+ DefaultScale: 1.0,
76
+ Brand: libBrand,
77
+ Views: ['Picker', 'ModeToggle', 'ScaleSelect', 'BrandMark', 'TopBar', 'BottomBar'],
78
+ ViewOptions:
79
+ {
80
+ TopBar: { NavView: 'ComprehensionLoader-TopBar-Nav', UserView: 'ComprehensionLoader-TopBar-User', Height: 56 },
81
+ BottomBar: { StatusView: 'ComprehensionLoader-StatusBar', Height: 36 }
82
+ }
83
+ }, libPictSectionTheme);
42
84
  }
43
85
 
44
86
  onAfterInitializeAsync(fCallback)
@@ -66,10 +108,18 @@ class ComprehensionLoaderApplication extends libPictApplication
66
108
  // Make pict available for inline onclick handlers
67
109
  window.pict = this.pict;
68
110
 
69
- // Render layout (which chains child view renders via onAfterRender)
111
+ // Render the shell first creates panel destination divs.
112
+ this.pict.views['ComprehensionLoader-Shell'].render();
113
+
114
+ // Render the layout (which chains child view renders via onAfterRender)
115
+ // into the shell's #ComprehensionLoader-Workspace destination.
70
116
  this.pict.views['ComprehensionLoader-Layout'].render();
71
117
 
72
- // Post-render initialization
118
+ // Render the StatusBar into the BottomBar slot — provider's polling
119
+ // updates this by id in-place, so we only need the initial paint.
120
+ this.pict.views['ComprehensionLoader-StatusBar'].render();
121
+
122
+ // Post-render initialization (unchanged)
73
123
  this.pict.providers.ComprehensionLoader.initPersistence();
74
124
  this.pict.providers.ComprehensionLoader.startLiveStatusPolling();
75
125
  this.pict.providers.ComprehensionLoader.initAccordionPreviews();
@@ -580,11 +580,11 @@ class ComprehensionLoaderProvider extends libPictProvider
580
580
  {
581
581
  if (tmpIsLive)
582
582
  {
583
- tmpHtml = '<div style="font-size:0.9em; color:#888; padding:8px 0">Load in progress, waiting for entity data\u2026</div>';
583
+ tmpHtml = '<div style="font-size:0.9em; color:var(--theme-color-text-muted, #888); padding:8px 0">Load in progress, waiting for entity data\u2026</div>';
584
584
  }
585
585
  else
586
586
  {
587
- tmpHtml = '<div style="font-size:0.9em; color:#888; padding:8px 0">No load data available. Run a load to see operation details here.</div>';
587
+ tmpHtml = '<div style="font-size:0.9em; color:var(--theme-color-text-muted, #888); padding:8px 0">No load data available. Run a load to see operation details here.</div>';
588
588
  }
589
589
  }
590
590