cognite-neat 0.127.21__py3-none-any.whl → 0.127.22__py3-none-any.whl
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.
- cognite/neat/_session/_html/static/deployment.js +17 -16
- cognite/neat/_session/_html/templates/deployment.html +11 -10
- cognite/neat/_session/_result.py +5 -0
- cognite/neat/_version.py +1 -1
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.22.dist-info}/METADATA +1 -1
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.22.dist-info}/RECORD +8 -8
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.22.dist-info}/WHEEL +0 -0
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.22.dist-info}/licenses/LICENSE +0 -0
|
@@ -4,12 +4,13 @@ let currentFilters = {
|
|
|
4
4
|
severity: 'all',
|
|
5
5
|
};
|
|
6
6
|
let currentSearch = '';
|
|
7
|
-
|
|
7
|
+
const storageKey = 'neat-deployment-theme-' + uniqueId;
|
|
8
|
+
let isDarkMode = localStorage.getItem(storageKey) === 'dark';
|
|
8
9
|
|
|
9
|
-
const container = document.getElementById('deploymentContainer');
|
|
10
|
-
const themeToggle = document.getElementById('themeToggle');
|
|
11
|
-
const themeIcon = document.getElementById('themeIcon');
|
|
12
|
-
const themeText = document.getElementById('themeText');
|
|
10
|
+
const container = document.getElementById('deploymentContainer-' + uniqueId);
|
|
11
|
+
const themeToggle = document.getElementById('themeToggle-' + uniqueId);
|
|
12
|
+
const themeIcon = document.getElementById('themeIcon-' + uniqueId);
|
|
13
|
+
const themeText = document.getElementById('themeText-' + uniqueId);
|
|
13
14
|
|
|
14
15
|
// Status configuration
|
|
15
16
|
const STATUS_CONFIG = {
|
|
@@ -21,9 +22,9 @@ const STATUS_CONFIG = {
|
|
|
21
22
|
|
|
22
23
|
// Initialize status badge
|
|
23
24
|
function initializeStatus() {
|
|
24
|
-
const statusBadge = document.getElementById('statusBadge');
|
|
25
|
-
const statusIcon = document.getElementById('statusIcon');
|
|
26
|
-
const statusText = document.getElementById('statusText');
|
|
25
|
+
const statusBadge = document.getElementById('statusBadge-' + uniqueId);
|
|
26
|
+
const statusIcon = document.getElementById('statusIcon-' + uniqueId);
|
|
27
|
+
const statusText = document.getElementById('statusText-' + uniqueId);
|
|
27
28
|
|
|
28
29
|
const statusConfig = STATUS_CONFIG[stats.status] || STATUS_CONFIG.pending;
|
|
29
30
|
statusIcon.textContent = statusConfig.icon;
|
|
@@ -47,12 +48,12 @@ initializeStatus();
|
|
|
47
48
|
|
|
48
49
|
themeToggle.addEventListener('click', function() {
|
|
49
50
|
isDarkMode = !isDarkMode;
|
|
50
|
-
localStorage.setItem(
|
|
51
|
+
localStorage.setItem(storageKey, isDarkMode ? 'dark' : 'light');
|
|
51
52
|
updateTheme();
|
|
52
53
|
});
|
|
53
54
|
|
|
54
55
|
function renderChanges() {
|
|
55
|
-
const listContainer = document.getElementById('deploymentList');
|
|
56
|
+
const listContainer = document.getElementById('deploymentList-' + uniqueId);
|
|
56
57
|
const filtered = changes.filter(change => {
|
|
57
58
|
const matchesChangeType = currentFilters.changeType === 'all' ||
|
|
58
59
|
change.change_type === currentFilters.changeType;
|
|
@@ -97,9 +98,9 @@ function renderChanges() {
|
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
// Change type filters (stat items)
|
|
100
|
-
document.querySelectorAll('.stat-item').forEach(item => {
|
|
101
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ' .stat-item').forEach(item => {
|
|
101
102
|
item.addEventListener('click', function() {
|
|
102
|
-
document.querySelectorAll('.stat-item').forEach(i => i.classList.remove('active'));
|
|
103
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ' .stat-item').forEach(i => i.classList.remove('active'));
|
|
103
104
|
this.classList.add('active');
|
|
104
105
|
currentFilters.changeType = this.dataset.filter;
|
|
105
106
|
renderChanges();
|
|
@@ -107,10 +108,10 @@ document.querySelectorAll('.stat-item').forEach(item => {
|
|
|
107
108
|
});
|
|
108
109
|
|
|
109
110
|
// Other filters
|
|
110
|
-
document.querySelectorAll('.filter-btn').forEach(btn => {
|
|
111
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ' .filter-btn').forEach(btn => {
|
|
111
112
|
btn.addEventListener('click', function() {
|
|
112
113
|
const filterType = this.dataset.filterType;
|
|
113
|
-
document.querySelectorAll(`[data-filter-type="${filterType}"]`).forEach(b =>
|
|
114
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ` [data-filter-type="${filterType}"]`).forEach(b =>
|
|
114
115
|
b.classList.remove('active')
|
|
115
116
|
);
|
|
116
117
|
this.classList.add('active');
|
|
@@ -120,13 +121,13 @@ document.querySelectorAll('.filter-btn').forEach(btn => {
|
|
|
120
121
|
});
|
|
121
122
|
|
|
122
123
|
// Search
|
|
123
|
-
document.getElementById('searchInput').addEventListener('input', function(e) {
|
|
124
|
+
document.getElementById('searchInput-' + uniqueId).addEventListener('input', function(e) {
|
|
124
125
|
currentSearch = e.target.value;
|
|
125
126
|
renderChanges();
|
|
126
127
|
});
|
|
127
128
|
|
|
128
129
|
// Export function
|
|
129
|
-
window
|
|
130
|
+
window['exportDeployment_' + uniqueId] = function() {
|
|
130
131
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
131
132
|
const report = {
|
|
132
133
|
status: stats.status,
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
{{SPECIFIC_CSS}}
|
|
4
4
|
</style>
|
|
5
5
|
|
|
6
|
-
<div class="issues-container deployment-container" id="deploymentContainer">
|
|
6
|
+
<div class="issues-container deployment-container" id="deploymentContainer-{{unique_id}}">
|
|
7
7
|
<div class="issues-header deployment-header">
|
|
8
|
-
<button class="theme-toggle" id="themeToggle">
|
|
9
|
-
<span id="themeIcon">🌙</span>
|
|
10
|
-
<span id="themeText">Dark</span>
|
|
8
|
+
<button class="theme-toggle" id="themeToggle-{{unique_id}}">
|
|
9
|
+
<span id="themeIcon-{{unique_id}}">🌙</span>
|
|
10
|
+
<span id="themeText-{{unique_id}}">Dark</span>
|
|
11
11
|
</button>
|
|
12
12
|
<h2 class="deployment-title issues-title">
|
|
13
13
|
<span>Deployment Result</span>
|
|
14
|
-
<span class="status-badge status-{{status}}" id="statusBadge">
|
|
15
|
-
<span id="statusIcon"></span>
|
|
16
|
-
<span id="statusText"></span>
|
|
14
|
+
<span class="status-badge status-{{status}}" id="statusBadge-{{unique_id}}">
|
|
15
|
+
<span id="statusIcon-{{unique_id}}"></span>
|
|
16
|
+
<span id="statusText-{{unique_id}}"></span>
|
|
17
17
|
</span>
|
|
18
18
|
</h2>
|
|
19
19
|
<div class="deployment-stats issues-stats">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<div class="stat-item" data-filter="unchanged">
|
|
36
36
|
<span class="stat-number">{{unchanged}}</span> Unchanged
|
|
37
37
|
</div>
|
|
38
|
-
<button class="export-btn" onclick="
|
|
38
|
+
<button class="export-btn" onclick="exportDeployment_{{unique_id}}()">Export Report</button>
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
41
41
|
|
|
@@ -58,17 +58,18 @@
|
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
60
|
<div class="control-group">
|
|
61
|
-
<input type="text" class="search-input" placeholder="🔍 Search resource IDs, changes..." id="searchInput">
|
|
61
|
+
<input type="text" class="search-input" placeholder="🔍 Search resource IDs, changes..." id="searchInput-{{unique_id}}">
|
|
62
62
|
</div>
|
|
63
63
|
</div>
|
|
64
64
|
|
|
65
|
-
<div class="deployment-list issues-list" id="deploymentList"></div>
|
|
65
|
+
<div class="deployment-list issues-list" id="deploymentList-{{unique_id}}"></div>
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
<script>
|
|
69
69
|
(function() {
|
|
70
70
|
const changes = {{CHANGES_JSON}};
|
|
71
71
|
const stats = {{STATS_JSON}};
|
|
72
|
+
const uniqueId = '{{unique_id}}';
|
|
72
73
|
{{SCRIPTS}}
|
|
73
74
|
})();
|
|
74
75
|
</script>
|
cognite/neat/_session/_result.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import uuid
|
|
2
3
|
from typing import Any, get_args
|
|
3
4
|
|
|
4
5
|
from pydantic import BaseModel, Field
|
|
@@ -203,6 +204,9 @@ class Result:
|
|
|
203
204
|
|
|
204
205
|
def _build_template_vars(self, stats: DeploymentStatistics) -> dict[str, Any]:
|
|
205
206
|
"""Build template variables from statistics."""
|
|
207
|
+
# Generate unique ID for this render to avoid conflicts in Jupyter
|
|
208
|
+
unique_id = uuid.uuid4().hex[:8]
|
|
209
|
+
|
|
206
210
|
# Convert Pydantic models to dicts for JSON serialization
|
|
207
211
|
serialized_changes = [change.model_dump() for change in self._serialized_changes]
|
|
208
212
|
|
|
@@ -216,6 +220,7 @@ class Result:
|
|
|
216
220
|
"deleted": stats.by_change_type.delete,
|
|
217
221
|
"skipped": stats.by_change_type.skip,
|
|
218
222
|
"unchanged": stats.by_change_type.unchanged,
|
|
223
|
+
"unique_id": unique_id,
|
|
219
224
|
}
|
|
220
225
|
|
|
221
226
|
def _repr_html_(self) -> str:
|
cognite/neat/_version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "0.127.
|
|
1
|
+
__version__ = "0.127.22"
|
|
2
2
|
__engine__ = "^2.0.4"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 0.127.
|
|
3
|
+
Version: 0.127.22
|
|
4
4
|
Summary: Knowledge graph transformation
|
|
5
5
|
Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
|
|
6
6
|
Project-URL: Homepage, https://cognite-neat.readthedocs-hosted.com/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
cognite/neat/__init__.py,sha256=Lo4DbjDOwnhCYUoAgPp5RG1fDdF7OlnomalTe7n1ydw,211
|
|
2
2
|
cognite/neat/_exceptions.py,sha256=ox-5hXpee4UJlPE7HpuEHV2C96aLbLKo-BhPDoOAzhA,1650
|
|
3
3
|
cognite/neat/_issues.py,sha256=wH1mnkrpBsHUkQMGUHFLUIQWQlfJ_qMfdF7q0d9wNhY,1871
|
|
4
|
-
cognite/neat/_version.py,sha256=
|
|
4
|
+
cognite/neat/_version.py,sha256=Lln5aX0eKRyzYKw67isIIefxhPXDVBWcCGy6IFleQUM,47
|
|
5
5
|
cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
cognite/neat/v1.py,sha256=owqW5Mml2DSZx1AvPvwNRTBngfhBNrQ6EH-7CKL7Jp0,61
|
|
7
7
|
cognite/neat/_client/__init__.py,sha256=75Bh7eGhaN4sOt3ZcRzHl7pXaheu1z27kmTHeaI05vo,114
|
|
@@ -86,19 +86,19 @@ cognite/neat/_session/__init__.py,sha256=owqW5Mml2DSZx1AvPvwNRTBngfhBNrQ6EH-7CKL
|
|
|
86
86
|
cognite/neat/_session/_issues.py,sha256=E8UQeSJURg2dm4MF1pfD9dp-heSRT7pgQZgKlD1-FGs,2723
|
|
87
87
|
cognite/neat/_session/_opt.py,sha256=QcVK08JMmVzJpD0GKHelbljMOQi6CMD1w-maQOlbyZQ,1350
|
|
88
88
|
cognite/neat/_session/_physical.py,sha256=VyMvvPyN9khR_26rMS0kVuZg23k5c8Hfs7XDeMrkF_w,10526
|
|
89
|
-
cognite/neat/_session/_result.py,sha256=
|
|
89
|
+
cognite/neat/_session/_result.py,sha256=po2X4s-Tioe0GQAGCfK862hKXNRX5YjJZsEzNcTC8nI,7879
|
|
90
90
|
cognite/neat/_session/_session.py,sha256=rezw1MEMN8DPA6waULt5-mdeMuwq3ZNnSb1CSsKM0ko,2584
|
|
91
91
|
cognite/neat/_session/_wrappers.py,sha256=9t_MnJ0Sw_v-f6oTIh8dtAT-3oEbqumGuND97aPCC3M,3581
|
|
92
92
|
cognite/neat/_session/_html/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
cognite/neat/_session/_html/_render.py,sha256=fD8iee4ql50CrHGH41SSh9Tw1lM0tHt-NF0OnnxHosg,1193
|
|
94
94
|
cognite/neat/_session/_html/static/__init__.py,sha256=ZLQFJMITBgbiyTRaVbFAm1l-Dhr5pXKKsfY8jjD3ZhY,305
|
|
95
95
|
cognite/neat/_session/_html/static/deployment.css,sha256=wRv2G0NKIxSq4kyOqd3ajZY60KeT4D6-D3lG-TmzURY,4894
|
|
96
|
-
cognite/neat/_session/_html/static/deployment.js,sha256=
|
|
96
|
+
cognite/neat/_session/_html/static/deployment.js,sha256=0fNAIYYtDJR6RhvZvnRSN6UvgvnWTXb_UFUSDxsI9JU,5795
|
|
97
97
|
cognite/neat/_session/_html/static/issues.css,sha256=Egvqo2cnY8FKTtZp_v3rTWcIgb1vTJvToNCJJovWm70,3824
|
|
98
98
|
cognite/neat/_session/_html/static/issues.js,sha256=NHx_iAsZTvpZjOoFsxFU_sxqjF4-F4EdHRmoc2DjpIE,6348
|
|
99
99
|
cognite/neat/_session/_html/static/shared.css,sha256=uUm5fqK1zrMBWCuAWdUoBRaAj9AO611hUxuGvxMzbzc,4190
|
|
100
100
|
cognite/neat/_session/_html/templates/__init__.py,sha256=hgufJuBxUZ2nLCMTCxGixmk5ztZF38HzPcvtBkWJwxw,128
|
|
101
|
-
cognite/neat/_session/_html/templates/deployment.html,sha256=
|
|
101
|
+
cognite/neat/_session/_html/templates/deployment.html,sha256=rhqcBI5no8h0BEiwTIQy5A3wvBygytCUolpc50yFiTE,3487
|
|
102
102
|
cognite/neat/_session/_html/templates/issues.html,sha256=k9Ml3LLeWGhpMfqSoCl6QuNRRy__E6Sa5S_I1Kc33NU,1659
|
|
103
103
|
cognite/neat/_session/_usage_analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
104
|
cognite/neat/_session/_usage_analytics/_collector.py,sha256=XRyeIW7Att3pIgLpNxQ2joGdIDijfgrPfX7G13OKz-o,4786
|
|
@@ -312,7 +312,7 @@ cognite/neat/v0/session/engine/__init__.py,sha256=D3MxUorEs6-NtgoICqtZ8PISQrjrr4
|
|
|
312
312
|
cognite/neat/v0/session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
|
|
313
313
|
cognite/neat/v0/session/engine/_interface.py,sha256=3W-cYr493c_mW3P5O6MKN1xEQg3cA7NHR_ev3zdF9Vk,533
|
|
314
314
|
cognite/neat/v0/session/engine/_load.py,sha256=u0x7vuQCRoNcPt25KJBJRn8sJabonYK4vtSZpiTdP4k,5201
|
|
315
|
-
cognite_neat-0.127.
|
|
316
|
-
cognite_neat-0.127.
|
|
317
|
-
cognite_neat-0.127.
|
|
318
|
-
cognite_neat-0.127.
|
|
315
|
+
cognite_neat-0.127.22.dist-info/METADATA,sha256=Z7803rtujMVrtcXDwv6nG-sVhmPaEM7WBZhK-41Lryk,9150
|
|
316
|
+
cognite_neat-0.127.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
317
|
+
cognite_neat-0.127.22.dist-info/licenses/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
|
|
318
|
+
cognite_neat-0.127.22.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|