@evotecit/canopyx 0.3.5 → 0.3.7
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.
- package/CanopyX.Html/Assets/canopyx-calendar.js +4 -3
- package/CanopyX.Html/Assets/canopyx-detail-rows.js +2 -2
- package/CanopyX.Html/Assets/canopyx-filter-editor.js +2 -1
- package/CanopyX.Html/Assets/canopyx-flow-checks.css +24 -0
- package/CanopyX.Html/Assets/canopyx-flow-checks.js +13 -0
- package/CanopyX.Html/Assets/canopyx-flow-command.css +14 -0
- package/CanopyX.Html/Assets/canopyx-flow-command.js +19 -0
- package/CanopyX.Html/Assets/canopyx-flow-consent.css +6 -0
- package/CanopyX.Html/Assets/canopyx-flow-consent.js +8 -0
- package/CanopyX.Html/Assets/canopyx-flow-dialog.css +14 -0
- package/CanopyX.Html/Assets/canopyx-flow-dialog.js +3 -0
- package/CanopyX.Html/Assets/canopyx-flow-drafts.css +17 -0
- package/CanopyX.Html/Assets/canopyx-flow-drafts.js +21 -0
- package/CanopyX.Html/Assets/canopyx-flow-endpoint.js +6 -0
- package/CanopyX.Html/Assets/canopyx-flow-entry.css +1 -0
- package/CanopyX.Html/Assets/canopyx-flow-entry.js +6 -2
- package/CanopyX.Html/Assets/canopyx-flow-host.css +5 -0
- package/CanopyX.Html/Assets/canopyx-flow-host.js +4 -0
- package/CanopyX.Html/Assets/canopyx-flow-links.js +6 -0
- package/CanopyX.Html/Assets/canopyx-flow-module.mjs +6 -2
- package/CanopyX.Html/Assets/canopyx-flow-options.js +25 -0
- package/CanopyX.Html/Assets/canopyx-flow-pick.css +19 -0
- package/CanopyX.Html/Assets/canopyx-flow-pick.js +9 -0
- package/CanopyX.Html/Assets/canopyx-flow-preview.css +11 -0
- package/CanopyX.Html/Assets/canopyx-flow-preview.js +9 -0
- package/CanopyX.Html/Assets/canopyx-flow-records.css +9 -0
- package/CanopyX.Html/Assets/canopyx-flow-records.js +12 -0
- package/CanopyX.Html/Assets/canopyx-flow-tasks.css +29 -0
- package/CanopyX.Html/Assets/canopyx-flow-tasks.js +20 -0
- package/CanopyX.Html/Assets/canopyx-flow.js +48 -45
- package/CanopyX.Html/Assets/canopyx-formatting.js +7 -6
- package/CanopyX.Html/Assets/canopyx-grid-module.mjs +69 -42
- package/CanopyX.Html/Assets/canopyx-grid.css +23 -0
- package/CanopyX.Html/Assets/canopyx-grid.js +69 -42
- package/CanopyX.Html/Assets/canopyx-interactive.js +4 -4
- package/CanopyX.Html/Assets/canopyx-labels-de.js +77 -1
- package/CanopyX.Html/Assets/canopyx-labels-es.js +77 -1
- package/CanopyX.Html/Assets/canopyx-labels-fr.js +77 -1
- package/CanopyX.Html/Assets/canopyx-labels-it.js +77 -1
- package/CanopyX.Html/Assets/canopyx-labels-pl.js +77 -1
- package/CanopyX.Html/Assets/canopyx-live.js +4 -3
- package/CanopyX.Html/Assets/canopyx-matrix.js +3 -3
- package/CanopyX.Html/Assets/canopyx-module.mjs +4 -4
- package/CanopyX.Html/Assets/canopyx-reporting-module.mjs +71 -44
- package/CanopyX.Html/Assets/canopyx-reporting.css +23 -0
- package/CanopyX.Html/Assets/canopyx-reporting.js +71 -44
- package/CanopyX.Html/Assets/canopyx-tree-tools.js +10 -8
- package/CanopyX.Html/Assets/canopyx.js +4 -4
- package/JavaScript/flow.d.ts +180 -9
- package/JavaScript/grid.d.ts +8 -0
- package/JavaScript/locales/de.mjs +77 -1
- package/JavaScript/locales/es.mjs +77 -1
- package/JavaScript/locales/fr.mjs +77 -1
- package/JavaScript/locales/it.mjs +77 -1
- package/JavaScript/locales/pl.mjs +77 -1
- package/JavaScript/protocol.d.ts +1 -1
- package/README.md +6 -2
- package/package.json +3 -1
|
@@ -60,7 +60,7 @@ function fill(template,values){return template.replace(/\{(\w+)\}/g, (match, nam
|
|
|
60
60
|
const pluralRules=new Map();function plural(template,count,lang){if(!template.startsWith("["))return template;const forms={};for(const match of template.matchAll(/\[(zero|one|two|few|many|other)\]([^[]*)/g)) forms[match[1]] = match[2];
|
|
61
61
|
let rules=pluralRules.get(lang);if(!rules){try{rules=new Intl.PluralRules(lang||"en")}catch(_){rules=new Intl.PluralRules("en")}pluralRules.set(lang,rules)}
|
|
62
62
|
return forms[rules.select(Number(count))]??forms.other??template}
|
|
63
|
-
let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
|
|
63
|
+
let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",hiddenColumns:"[one]+{count} column[other]+{count} columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
|
|
64
64
|
if(typeof source[name]!=="string"||!/\S/.test(source[name])) throw new Error("CanopyX: label '" + name + "' must be a string with visible text.");
|
|
65
65
|
if((name==="utcTime"||name==="localTime")&&source[name].indexOf("{time}")<0)throw new Error("CanopyX: label '"+name+"' must hold {time}.");labels[name]=source[name]})}
|
|
66
66
|
return Object.freeze(labels)}
|
|
@@ -74,7 +74,7 @@ function trusted(kind,value){if(trustPolicy===undefined){try{trustPolicy=global.
|
|
|
74
74
|
catch(_){trustPolicy=null}}
|
|
75
75
|
return trustPolicy?trustPolicy["create"+kind](value):value}
|
|
76
76
|
function hostHtml(element,html,sanitize,kind){const text=String(html??""),value=sanitize?sanitize(text,{kind}):text;if(value?.nodeType)element.replaceChildren(value);else if(typeof value==="string")element.innerHTML=trusted("HTML",value);else if(global.trustedTypes?.isHTML?.(value))element.innerHTML=value;else throw new Error("CanopyX: invalid sanitizeHtml result.")}
|
|
77
|
-
DEFAULT_LABELS=Object.freeze(Object.assign({},DEFAULT_LABELS,{gridViews:"Views",gridViewName:"View name",gridSaveView:"Save view",gridRemoveView:"Remove view",gridResetView:"Reset view",gridChooseView:"Choose a saved view",gridApply:"Apply",gridFindColumn:"Find a column…",gridShowAllColumns:"Show all",gridResetColumns:"Reset columns",gridReorderColumn:"{column}: drag, or press Alt+Up or Alt+Down to move",gridPinnedLeft:"Pinned left",gridPinnedRight:"Pinned right",gridResponsiveHidden:"Hidden at this width",gridExport:"Export",gridVisibleRows:"Visible rows",gridSelectedRows:"Selected rows",gridAllRows:"All rows",gridDownloadCsv:"Download CSV",gridCopy:"Copy",gridExportProgress:"{completed} of {total} records",gridExportReading:"{completed} records",gridExportCancelled:"Export cancelled",gridCancelExport:"Cancel export",gridMore:"More",gridPrint:"Print",gridDetails:"Record details",gridDetailsSection:"Details",gridPreviousRecord:"Previous record",gridNextRecord:"Next record",gridCloseRecord:"Close
|
|
77
|
+
DEFAULT_LABELS=Object.freeze(Object.assign({},DEFAULT_LABELS,{gridViews:"Views",gridViewName:"View name",gridSaveView:"Save view",gridRemoveView:"Remove view",gridResetView:"Reset view",gridChooseView:"Choose a saved view",gridApply:"Apply",gridFindColumn:"Find a column…",gridShowAllColumns:"Show all",gridResetColumns:"Reset columns",gridReorderColumn:"{column}: drag, or press Alt+Up or Alt+Down to move",gridPinnedLeft:"Pinned left",gridPinnedRight:"Pinned right",gridResponsiveHidden:"Hidden at this width",gridExport:"Export",gridVisibleRows:"Visible rows",gridSelectedRows:"Selected rows",gridAllRows:"All rows",gridDownloadCsv:"Download CSV",gridCopy:"Copy",gridExportProgress:"{completed} of {total} records",gridExportReading:"{completed} records",gridExportCancelled:"Export cancelled",gridCancelExport:"Cancel export",gridMore:"More",gridPrint:"Print",gridDetails:"Record details",gridDetailsSection:"Details",gridPreviousRecord:"Previous record",gridNextRecord:"Next record",gridCloseRecord:"Close"}));DEFAULT_LABELS=Object.freeze(Object.assign({},DEFAULT_LABELS,{recordBack:"Back",recordBackTo:"Back to {record}",recordTrail:"Record trail",recordShowing:"Showing {record}",recordTabs:"Record views",recordSections:"Jump to a section",recordOtherFields:"Other fields",recordShowEmpty:"Show empty fields ({count})",recordHideEmpty:"Hide empty fields",recordActions:"Record actions",recordCopyValues:"Copy values",recordCopyJson:"Copy as JSON",recordCopyLink:"Copy link",recordCopied:"Copied to the clipboard",recordPrint:"Print record",recordExportCsv:"Export CSV",recordExportJson:"Export JSON",recordOpenAll:"Open all in grid",recordLoadMore:"Load more",recordCount:"{shown} of {total}",recordItems:"{count} items",recordMore:"+{count}",recordShowAll:"Show all {count}",recordRetry:"Retry",recordLoadFailed:"Could not load the record details: {error}",recordUnavailable:"Record {id} is not available here.",recordField:"Field",recordValue:"Value",recordSection:"Section",recordBefore:"Before",recordAfter:"After",recordAdded:"Added",recordRemoved:"Removed",recordChanged:"{count} changed fields"}));function boundedPattern(source,exact=true,whole=false){const bad=()=>{throw new Error("CanopyX: pattern requires literals, character classes and at most one variable repetition anchored at the start; groups, alternatives and backreferences are unsupported.")};if(typeof source!=="string"||source.length>256)bad();let width=0,variable=0;for(let i=0;i<source.length;){const unit=source[i++];if(unit==="^"&&i===1||unit==="$"&&i===source.length)continue;if(unit==="\\"){const escape=source[i++];if(!escape||!/^[dDsSwWbBnrtfv\\.^$*+?{}\[\]()|/]$/.test(escape)) bad();
|
|
78
78
|
}else if(unit==="["){let closed=false;while(i<source.length){const c=source[i++];if(c==="\\"){const escape=source[i++];if(!escape||!/^[dDsSwWbnrtfv\\.^$*+?{}\[\]()|/-]$/.test(escape)) bad(); }
|
|
79
79
|
else if(c==="]"){closed=true;break}}
|
|
80
80
|
if(!closed)bad()}else if("()|^$*+?{}]".includes(unit))bad();let count=1;if(i<source.length&&"*+?".includes(source[i])){variable++;i++}
|
|
@@ -334,7 +334,7 @@ function hostRenderers(renderers,columns,plugins){if(![Object.prototype,null].in
|
|
|
334
334
|
Object.keys(renderers).some(id=>typeof renderers[id]!=="function"||!columns.some(column=>column.id===id)))
|
|
335
335
|
throw new Error("CanopyX: invalid column renderers.");const named=Object.assign(Object.create(null),...plugins.map(item=>item.cellRenderers));return Object.assign(Object.create(null),...columns.filter(column=>typeof column.renderer==="string"&&named[column.renderer])
|
|
336
336
|
.map(column=>({[column.id]:named[column.renderer]})),renderers)}
|
|
337
|
-
function disposeHostSlot(slot){const lifetime=slot.hostLifetime;if(!lifetime)return;delete slot.hostLifetime;lifetime.dispose()}
|
|
337
|
+
function disposeHostSlot(slot){slot.childSlots?.forEach(disposeHostSlot);const lifetime=slot.hostLifetime;if(!lifetime)return;delete slot.hostLifetime;lifetime.dispose()}
|
|
338
338
|
function disposeRowHostCells(row){row._cells?.forEach(disposeHostSlot)}
|
|
339
339
|
class HostCellContext{#controller;#cleanups;constructor(slot,column,level,expanded,index){slot.hostLifetime=this;this.column=column;this.level=level;this.expanded=expanded;this.index=index}
|
|
340
340
|
get signal(){this.#controller||=new AbortController();if(this.#cleanups===null)this.#controller.abort();return this.#controller.signal}
|
|
@@ -504,7 +504,7 @@ if(active>=0){list.children[active].setAttribute("aria-selected","false")}
|
|
|
504
504
|
active=active<0?(delta<0?hits.length-1:0):(active+delta+hits.length)%hits.length;const item=list.children[active];item.setAttribute("aria-selected","true");input.setAttribute("aria-activedescendant",item.id);item.scrollIntoView({block:"nearest"})};input.addEventListener("input",()=>{cancelNavigation();sequence++;clearTimeout(timer);hits=[];close();timer=setTimeout(run,150)});input.addEventListener("keydown",(e)=>{if(e.defaultPrevented||e.isComposing)return;if(e.key==="ArrowDown"||e.key==="ArrowUp"){move(e.key==="ArrowDown"?1:-1)}else if(e.key==="Enter"){if(!list.hidden){choose(active>=0?active:0)}}else if(e.key==="Escape"){cancelNavigation();sequence++;clearTimeout(timer);if(list.hidden){input.value=""}
|
|
505
505
|
close()}else{return}
|
|
506
506
|
e.preventDefault()});input.addEventListener("blur",()=>{cancelNavigation();sequence++;clearTimeout(timer);clearTimeout(blurTimer);blurTimer=setTimeout(close,150)});this.cancelSearch=()=>{cancelNavigation();sequence++;clearTimeout(timer);clearTimeout(blurTimer);hits=[];close()};box.appendChild(input);box.appendChild(list);box.appendChild(status);bar.appendChild(box);this.searchInput=input}});function watchFlyout(anchorElement,panel,isOpen){const position=()=>{if(!isOpen())return;const anchor=anchorElement.getBoundingClientRect(),fixed=getComputedStyle(panel).position==="fixed";const below=Math.max(0,global.innerHeight-anchor.bottom-8);const above=Math.max(0,anchor.top-8);const opensAbove=below<120&&above>below,room=opensAbove?above:below;panel.style.maxHeight=(panel.classList.contains("cx-fb")?room:Math.min(320,room))+ "px";panel.style.top=opensAbove?"auto":fixed?anchor.bottom+"px":"100%";panel.style.bottom=opensAbove?fixed?global.innerHeight-anchor.top+"px":"100%":"auto";const width=panel.getBoundingClientRect().width;panel.style.left=Math.max(8,Math.min(anchor.left,global.innerWidth-width-8))-(fixed?0:anchor.left)+ "px"};global.addEventListener("resize",position);global.addEventListener("scroll",position,true);return{position,dispose:()=>{global.removeEventListener("resize",position);global.removeEventListener("scroll",position,true)}}}
|
|
507
|
-
const PART_URL=typeof document!=="undefined"&&document.currentScript?.src;const PARTS={"tree-tools":["
|
|
507
|
+
const PART_URL=typeof document!=="undefined"&&document.currentScript?.src;const PARTS={"tree-tools":["4c6c4101089c4444","canopyx-tree-tools.510207e8f47014fd.js","canopyx-tree-tools.ef7a3fb9c9115a82.css"],"export":["8b99c0b7b0ec37c5","canopyx-export.6989ea36f5d6da7b.js"],"links":["f1ab7e32b501ce37","canopyx-links.d96addeefb3eccf5.js"],"search":["521eebd6e1bbbd35","canopyx-search.14c69f4551c69f23.js"],"link":["fa0c9e888463553b","canopyx-link.4ec39bc39fa6cf50.js","canopyx-link.8435c892613926ac.css"],"highlight":["f39423961654c1e2","canopyx-highlight.a6f93893d36ab343.js","canopyx-highlight.5b6d2e0d979f9f9b.css"],"layouts":["fa8c686f21626884","canopyx-layouts.e7250c82a6abf52e.js","canopyx-layouts.0b75738924533ee8.css"],"record-panel":["bcc06276c7933af6","canopyx-record-panel.a374fb4254f9115c.js","canopyx-record-panel.f3691d54cefaab04.css"]},PART_CODE=new Map(),partName=name=>typeof name==="string"&&/^[a-z][a-z\d-]{0,31}$/.test(name);
|
|
508
508
|
function registerPart(name,part){if(!partName(name)||!part||typeof part.version!=="string"||typeof part.install!=="function"||
|
|
509
509
|
part.requires!==undefined&&!(Array.isArray(part.requires)&&part.requires.every(partName)))throw new Error("CanopyX: invalid part.");PART_CODE.set(name,part)}
|
|
510
510
|
function definePart(View,name,label,context){const parts=View.prototype.parts||={};return parts[name]={name,label,context,parts}}
|
|
@@ -12,6 +12,7 @@ const labels = Object.freeze({
|
|
|
12
12
|
searchWordTooShort: "Ein Wort mit mindestens {min} Zeichen eingeben",
|
|
13
13
|
searchFailed: "Suche fehlgeschlagen: {error}",
|
|
14
14
|
columns: "Spalten",
|
|
15
|
+
hiddenColumns: "[one]+{count} Spalte[other]+{count} Spalten",
|
|
15
16
|
gridFilters: "Filter",
|
|
16
17
|
gridFitContent: "An Inhalt anpassen",
|
|
17
18
|
gridUnpin: "Fixierung aufheben",
|
|
@@ -244,7 +245,7 @@ const labels = Object.freeze({
|
|
|
244
245
|
gridExportCancelled: "Export abgebrochen",
|
|
245
246
|
gridCancelExport: "Export abbrechen",
|
|
246
247
|
gridPrint: "Drucken",
|
|
247
|
-
gridCloseRecord: "
|
|
248
|
+
gridCloseRecord: "Schließen",
|
|
248
249
|
gridContains: "enthält",
|
|
249
250
|
gridStartsWith: "beginnt mit",
|
|
250
251
|
gridIn: "ist einer der Werte",
|
|
@@ -589,6 +590,80 @@ const labels = Object.freeze({
|
|
|
589
590
|
flowCopied: "Kopiert",
|
|
590
591
|
flowSavedIt: "Ich habe es gespeichert",
|
|
591
592
|
flowShownOnce: "Wird nur einmal angezeigt. Jetzt kopieren.",
|
|
593
|
+
flowTimedOut: "Der Host hat nicht rechtzeitig geantwortet.",
|
|
594
|
+
flowNoHostHook: "Der Host beantwortet das nicht.",
|
|
595
|
+
flowOptionsLoading: "Optionen werden geladen…",
|
|
596
|
+
flowOptionsFailed: "Die Optionen konnten nicht geladen werden: {message}",
|
|
597
|
+
flowRetry: "Erneut versuchen",
|
|
598
|
+
flowRunAgain: "Erneut ausführen",
|
|
599
|
+
flowRunCheckAgain: "„{check}“ erneut ausführen",
|
|
600
|
+
flowFieldsLoading: "Felder werden geladen…",
|
|
601
|
+
flowFieldsFailed: "Die Felder konnten nicht geladen werden: {message}",
|
|
602
|
+
flowChangedMark: "Geändert",
|
|
603
|
+
flowRecordActions: "Aktionen",
|
|
604
|
+
flowRecordCell: "{column}, Zeile {row}",
|
|
605
|
+
flowRecordRemove: "Zeile {row} entfernen",
|
|
606
|
+
flowRecordAdd: "Zeile hinzufügen",
|
|
607
|
+
flowRecordsEmpty: "Noch keine Zeilen.",
|
|
608
|
+
flowRecordProblem: "Zeile {row}: {message}",
|
|
609
|
+
flowRecordsCount: "[one]{count} Zeile[other]{count} Zeilen",
|
|
610
|
+
flowPickMore: "und {count} weitere",
|
|
611
|
+
flowPickCount: "[one]{count} ausgewählt[other]{count} ausgewählt",
|
|
612
|
+
flowPickChosen: "Ausgewählt",
|
|
613
|
+
flowPickNone: "Noch nichts ausgewählt.",
|
|
614
|
+
flowChecks: "Prüfungen",
|
|
615
|
+
flowCancel: "Abbrechen",
|
|
616
|
+
flowCheckAcknowledge: "Trotz der Warnung fortfahren",
|
|
617
|
+
flowCheckRunning: "Wird geprüft…",
|
|
618
|
+
flowCheckNotRun: "Nicht ausgeführt",
|
|
619
|
+
flowCheckStale: "Die Antworten haben sich seit der Prüfung geändert",
|
|
620
|
+
flowCheckPassed: "Bestanden um {time}",
|
|
621
|
+
flowCheckWarning: "Warnung um {time}",
|
|
622
|
+
flowCheckFailed: "Fehlgeschlagen um {time}",
|
|
623
|
+
flowCheckInvalid: "Die Prüfung lieferte keine verwertbare Antwort.",
|
|
624
|
+
flowCheckNeeded: "Führen Sie „{check}“ mit diesen Antworten aus.",
|
|
625
|
+
flowCheckNotPassed: "„{check}“ wurde nicht bestanden.",
|
|
626
|
+
flowCheckConfirmWarning: "Bestätigen Sie die Warnung von „{check}“.",
|
|
627
|
+
flowTasks: "Aufgaben",
|
|
628
|
+
flowTasksProgress: "{done} von {count} Aufgaben erledigt",
|
|
629
|
+
flowTaskNeedsAction: "Handlungsbedarf",
|
|
630
|
+
flowTaskBlocked: "Kann noch nicht beginnen",
|
|
631
|
+
flowTasksReview: "Prüfen und absenden",
|
|
632
|
+
flowTasksIncomplete: "Erledigen Sie zuerst die erforderlichen Aufgaben.",
|
|
633
|
+
flowBackToTasks: "Zurück zu den Aufgaben",
|
|
634
|
+
flowSaveAndReturn: "Speichern und zurück",
|
|
635
|
+
flowSaveDraft: "Entwurf speichern",
|
|
636
|
+
flowClose: "Schließen",
|
|
637
|
+
flowDiscardQuestion: "Ihre Antworten verwerfen?",
|
|
638
|
+
flowDiscard: "Verwerfen",
|
|
639
|
+
flowKeepEditing: "Weiter bearbeiten",
|
|
640
|
+
flowDraftSaved: "Entwurf gespeichert",
|
|
641
|
+
flowDraftFailed: "Der Entwurf wurde nicht gespeichert.",
|
|
642
|
+
flowDraftFound: "Gespeicherter Entwurf",
|
|
643
|
+
flowDraftFrom: "Sie haben einen Entwurf vom {time}.",
|
|
644
|
+
flowDraftStale: "Die Einstellungen haben sich nach dem Speichern dieses Entwurfs geändert.",
|
|
645
|
+
flowDraftResume: "Dort weitermachen, wo Sie aufgehört haben",
|
|
646
|
+
flowDraftRestart: "Neu beginnen",
|
|
647
|
+
flowStartFrom: "Ausgangspunkt",
|
|
648
|
+
flowPresetSave: "Als Vorlage speichern",
|
|
649
|
+
flowPresetNone: "Standardwerte",
|
|
650
|
+
flowPresetsSaved: "Gespeicherte Vorlagen",
|
|
651
|
+
flowPresetApplied: "Ausgehend von {preset}",
|
|
652
|
+
flowPresetName: "Name der Vorlage",
|
|
653
|
+
flowPresetFailed: "Die Vorlage wurde nicht gespeichert.",
|
|
654
|
+
flowPresetSaved: "Vorlage {preset} gespeichert",
|
|
655
|
+
flowPresetChanges: "[one]Basierend auf {preset}, {count} Änderung[other]Basierend auf {preset}, {count} Änderungen",
|
|
656
|
+
flowCommandTab: "Befehl",
|
|
657
|
+
flowPatchTab: "JSON-Patch",
|
|
658
|
+
flowCommandTitle: "Entsprechender Befehl",
|
|
659
|
+
flowPreview: "Vorschau",
|
|
660
|
+
flowPreviewLoading: "Vorschau wird geladen…",
|
|
661
|
+
flowPreviewFailed: "Die Vorschau konnte nicht geladen werden: {message}",
|
|
662
|
+
flowPreviewNone: "Keine Vorschau.",
|
|
663
|
+
flowConfirmMismatch: "Geben Sie genau {text} ein, um fortzufahren.",
|
|
664
|
+
flowAcknowledgeNeeded: "Bestätigen Sie dies vor dem Absenden.",
|
|
665
|
+
flowPresetCurrent: "Aktuelle Einstellungen",
|
|
666
|
+
flowPickOneByOne: "Wählen Sie die Datensätze einzeln oder seitenweise aus.",
|
|
592
667
|
matrixRows: "Zeilen",
|
|
593
668
|
matrixColumns: "Spalten",
|
|
594
669
|
matrixSearch: "Zeilen und Spalten suchen",
|
|
@@ -615,6 +690,7 @@ const labels = Object.freeze({
|
|
|
615
690
|
matrixItemTotal: "{item}: {count}",
|
|
616
691
|
matrixExpandGroup: "{group} aufklappen",
|
|
617
692
|
matrixCollapseGroup: "{group} zuklappen",
|
|
693
|
+
matrixGroupHeadingCount: "{count}",
|
|
618
694
|
matrixGroupCount: "Elemente: {count}",
|
|
619
695
|
matrixDetails: "Details",
|
|
620
696
|
matrixClose: "Schließen",
|
|
@@ -12,6 +12,7 @@ const labels = Object.freeze({
|
|
|
12
12
|
searchWordTooShort: "Escriba una palabra de al menos {min} caracteres",
|
|
13
13
|
searchFailed: "Error al buscar: {error}",
|
|
14
14
|
columns: "Columnas",
|
|
15
|
+
hiddenColumns: "[one]+{count} columna[other]+{count} columnas",
|
|
15
16
|
gridFilters: "Filtros",
|
|
16
17
|
gridFitContent: "Ajustar al contenido",
|
|
17
18
|
gridUnpin: "Desfijar",
|
|
@@ -244,7 +245,7 @@ const labels = Object.freeze({
|
|
|
244
245
|
gridExportCancelled: "Exportación cancelada",
|
|
245
246
|
gridCancelExport: "Cancelar exportación",
|
|
246
247
|
gridPrint: "Imprimir",
|
|
247
|
-
gridCloseRecord: "Cerrar
|
|
248
|
+
gridCloseRecord: "Cerrar",
|
|
248
249
|
gridContains: "contiene",
|
|
249
250
|
gridStartsWith: "empieza por",
|
|
250
251
|
gridIn: "es uno de estos valores",
|
|
@@ -589,6 +590,80 @@ const labels = Object.freeze({
|
|
|
589
590
|
flowCopied: "Copiado",
|
|
590
591
|
flowSavedIt: "Lo he guardado",
|
|
591
592
|
flowShownOnce: "Se muestra solo una vez. Cópielo ahora.",
|
|
593
|
+
flowTimedOut: "El host no respondió a tiempo.",
|
|
594
|
+
flowNoHostHook: "Ningún host responde a esto.",
|
|
595
|
+
flowOptionsLoading: "Cargando opciones…",
|
|
596
|
+
flowOptionsFailed: "No se pudieron cargar las opciones: {message}",
|
|
597
|
+
flowRetry: "Reintentar",
|
|
598
|
+
flowRunAgain: "Volver a ejecutar",
|
|
599
|
+
flowRunCheckAgain: "Volver a ejecutar «{check}»",
|
|
600
|
+
flowFieldsLoading: "Cargando campos…",
|
|
601
|
+
flowFieldsFailed: "No se pudieron cargar los campos: {message}",
|
|
602
|
+
flowChangedMark: "Modificado",
|
|
603
|
+
flowRecordActions: "Acciones",
|
|
604
|
+
flowRecordCell: "{column}, fila {row}",
|
|
605
|
+
flowRecordRemove: "Quitar la fila {row}",
|
|
606
|
+
flowRecordAdd: "Añadir fila",
|
|
607
|
+
flowRecordsEmpty: "Todavía no hay filas.",
|
|
608
|
+
flowRecordProblem: "Fila {row}: {message}",
|
|
609
|
+
flowRecordsCount: "[one]{count} fila[other]{count} filas",
|
|
610
|
+
flowPickMore: "y {count} más",
|
|
611
|
+
flowPickCount: "[one]{count} elegido[other]{count} elegidos",
|
|
612
|
+
flowPickChosen: "Elegidos",
|
|
613
|
+
flowPickNone: "Todavía no se ha elegido nada.",
|
|
614
|
+
flowChecks: "Comprobaciones",
|
|
615
|
+
flowCancel: "Cancelar",
|
|
616
|
+
flowCheckAcknowledge: "Continuar pese a la advertencia",
|
|
617
|
+
flowCheckRunning: "Comprobando…",
|
|
618
|
+
flowCheckNotRun: "Sin ejecutar",
|
|
619
|
+
flowCheckStale: "Las respuestas cambiaron desde la comprobación",
|
|
620
|
+
flowCheckPassed: "Superada a las {time}",
|
|
621
|
+
flowCheckWarning: "Advertencia a las {time}",
|
|
622
|
+
flowCheckFailed: "Falló a las {time}",
|
|
623
|
+
flowCheckInvalid: "La comprobación no dio una respuesta válida.",
|
|
624
|
+
flowCheckNeeded: "Ejecute «{check}» con estas respuestas.",
|
|
625
|
+
flowCheckNotPassed: "«{check}» no se superó.",
|
|
626
|
+
flowCheckConfirmWarning: "Confirme la advertencia de «{check}».",
|
|
627
|
+
flowTasks: "Tareas",
|
|
628
|
+
flowTasksProgress: "{done} de {count} tareas completadas",
|
|
629
|
+
flowTaskNeedsAction: "Requiere acción",
|
|
630
|
+
flowTaskBlocked: "Aún no se puede empezar",
|
|
631
|
+
flowTasksReview: "Revisar y enviar",
|
|
632
|
+
flowTasksIncomplete: "Complete primero las tareas obligatorias.",
|
|
633
|
+
flowBackToTasks: "Volver a las tareas",
|
|
634
|
+
flowSaveAndReturn: "Guardar y volver",
|
|
635
|
+
flowSaveDraft: "Guardar borrador",
|
|
636
|
+
flowClose: "Cerrar",
|
|
637
|
+
flowDiscardQuestion: "¿Descartar sus respuestas?",
|
|
638
|
+
flowDiscard: "Descartar",
|
|
639
|
+
flowKeepEditing: "Seguir editando",
|
|
640
|
+
flowDraftSaved: "Borrador guardado",
|
|
641
|
+
flowDraftFailed: "No se guardó el borrador.",
|
|
642
|
+
flowDraftFound: "Borrador guardado",
|
|
643
|
+
flowDraftFrom: "Tiene un borrador guardado el {time}.",
|
|
644
|
+
flowDraftStale: "La configuración cambió después de guardar este borrador.",
|
|
645
|
+
flowDraftResume: "Continuar donde lo dejó",
|
|
646
|
+
flowDraftRestart: "Empezar de nuevo",
|
|
647
|
+
flowStartFrom: "Empezar desde",
|
|
648
|
+
flowPresetSave: "Guardar como plantilla",
|
|
649
|
+
flowPresetNone: "Valores predeterminados",
|
|
650
|
+
flowPresetsSaved: "Plantillas guardadas",
|
|
651
|
+
flowPresetApplied: "Se empezó desde {preset}",
|
|
652
|
+
flowPresetName: "Nombre de la plantilla",
|
|
653
|
+
flowPresetFailed: "No se guardó la plantilla.",
|
|
654
|
+
flowPresetSaved: "Plantilla {preset} guardada",
|
|
655
|
+
flowPresetChanges: "[one]Basado en {preset}, {count} cambio[other]Basado en {preset}, {count} cambios",
|
|
656
|
+
flowCommandTab: "Comando",
|
|
657
|
+
flowPatchTab: "JSON patch",
|
|
658
|
+
flowCommandTitle: "Comando equivalente",
|
|
659
|
+
flowPreview: "Vista previa",
|
|
660
|
+
flowPreviewLoading: "Cargando la vista previa…",
|
|
661
|
+
flowPreviewFailed: "No se pudo cargar la vista previa: {message}",
|
|
662
|
+
flowPreviewNone: "Nada que previsualizar.",
|
|
663
|
+
flowConfirmMismatch: "Escriba exactamente {text} para continuar.",
|
|
664
|
+
flowAcknowledgeNeeded: "Confírmelo antes de enviar.",
|
|
665
|
+
flowPresetCurrent: "Configuración actual",
|
|
666
|
+
flowPickOneByOne: "Elija los registros uno a uno o por páginas.",
|
|
592
667
|
matrixRows: "Filas",
|
|
593
668
|
matrixColumns: "Columnas",
|
|
594
669
|
matrixSearch: "Buscar filas y columnas",
|
|
@@ -615,6 +690,7 @@ const labels = Object.freeze({
|
|
|
615
690
|
matrixItemTotal: "{item}: {count}",
|
|
616
691
|
matrixExpandGroup: "Expandir {group}",
|
|
617
692
|
matrixCollapseGroup: "Contraer {group}",
|
|
693
|
+
matrixGroupHeadingCount: "{count}",
|
|
618
694
|
matrixGroupCount: "Elementos: {count}",
|
|
619
695
|
matrixDetails: "Detalles",
|
|
620
696
|
matrixClose: "Cerrar",
|
|
@@ -12,6 +12,7 @@ const labels = Object.freeze({
|
|
|
12
12
|
searchWordTooShort: "Saisissez un mot d'au moins {min} caractères",
|
|
13
13
|
searchFailed: "Échec de la recherche : {error}",
|
|
14
14
|
columns: "Colonnes",
|
|
15
|
+
hiddenColumns: "[one]+{count} colonne[other]+{count} colonnes",
|
|
15
16
|
gridFilters: "Filtres",
|
|
16
17
|
gridFitContent: "Ajuster au contenu",
|
|
17
18
|
gridUnpin: "Désépingler",
|
|
@@ -244,7 +245,7 @@ const labels = Object.freeze({
|
|
|
244
245
|
gridExportCancelled: "Exportation annulée",
|
|
245
246
|
gridCancelExport: "Annuler l'exportation",
|
|
246
247
|
gridPrint: "Imprimer",
|
|
247
|
-
gridCloseRecord: "Fermer
|
|
248
|
+
gridCloseRecord: "Fermer",
|
|
248
249
|
gridContains: "contient",
|
|
249
250
|
gridStartsWith: "commence par",
|
|
250
251
|
gridIn: "est l'une des valeurs",
|
|
@@ -589,6 +590,80 @@ const labels = Object.freeze({
|
|
|
589
590
|
flowCopied: "Copié",
|
|
590
591
|
flowSavedIt: "Je l'ai enregistré",
|
|
591
592
|
flowShownOnce: "Affiché une seule fois. Copiez-le maintenant.",
|
|
593
|
+
flowTimedOut: "L’hôte n’a pas répondu à temps.",
|
|
594
|
+
flowNoHostHook: "Aucun hôte ne répond à cela.",
|
|
595
|
+
flowOptionsLoading: "Chargement des options…",
|
|
596
|
+
flowOptionsFailed: "Impossible de charger les options : {message}",
|
|
597
|
+
flowRetry: "Réessayer",
|
|
598
|
+
flowRunAgain: "Relancer",
|
|
599
|
+
flowRunCheckAgain: "Relancer « {check} »",
|
|
600
|
+
flowFieldsLoading: "Chargement des champs…",
|
|
601
|
+
flowFieldsFailed: "Impossible de charger les champs : {message}",
|
|
602
|
+
flowChangedMark: "Modifié",
|
|
603
|
+
flowRecordActions: "Actions",
|
|
604
|
+
flowRecordCell: "{column}, ligne {row}",
|
|
605
|
+
flowRecordRemove: "Supprimer la ligne {row}",
|
|
606
|
+
flowRecordAdd: "Ajouter une ligne",
|
|
607
|
+
flowRecordsEmpty: "Aucune ligne pour l’instant.",
|
|
608
|
+
flowRecordProblem: "Ligne {row} : {message}",
|
|
609
|
+
flowRecordsCount: "[one]{count} ligne[other]{count} lignes",
|
|
610
|
+
flowPickMore: "et {count} de plus",
|
|
611
|
+
flowPickCount: "[one]{count} choisi[other]{count} choisis",
|
|
612
|
+
flowPickChosen: "Choisis",
|
|
613
|
+
flowPickNone: "Rien n’est encore choisi.",
|
|
614
|
+
flowChecks: "Vérifications",
|
|
615
|
+
flowCancel: "Annuler",
|
|
616
|
+
flowCheckAcknowledge: "Continuer malgré l’avertissement",
|
|
617
|
+
flowCheckRunning: "Vérification…",
|
|
618
|
+
flowCheckNotRun: "Non exécutée",
|
|
619
|
+
flowCheckStale: "Les réponses ont changé depuis la vérification",
|
|
620
|
+
flowCheckPassed: "Réussie à {time}",
|
|
621
|
+
flowCheckWarning: "Avertissement à {time}",
|
|
622
|
+
flowCheckFailed: "Échec à {time}",
|
|
623
|
+
flowCheckInvalid: "La vérification n’a pas donné de réponse exploitable.",
|
|
624
|
+
flowCheckNeeded: "Lancez « {check} » avec ces réponses.",
|
|
625
|
+
flowCheckNotPassed: "« {check} » n’a pas réussi.",
|
|
626
|
+
flowCheckConfirmWarning: "Confirmez l’avertissement de « {check} ».",
|
|
627
|
+
flowTasks: "Tâches",
|
|
628
|
+
flowTasksProgress: "{done} tâches sur {count} terminées",
|
|
629
|
+
flowTaskNeedsAction: "Action requise",
|
|
630
|
+
flowTaskBlocked: "Ne peut pas encore commencer",
|
|
631
|
+
flowTasksReview: "Vérifier et envoyer",
|
|
632
|
+
flowTasksIncomplete: "Terminez d’abord les tâches requises.",
|
|
633
|
+
flowBackToTasks: "Retour aux tâches",
|
|
634
|
+
flowSaveAndReturn: "Enregistrer et revenir",
|
|
635
|
+
flowSaveDraft: "Enregistrer le brouillon",
|
|
636
|
+
flowClose: "Fermer",
|
|
637
|
+
flowDiscardQuestion: "Abandonner vos réponses ?",
|
|
638
|
+
flowDiscard: "Abandonner",
|
|
639
|
+
flowKeepEditing: "Continuer la saisie",
|
|
640
|
+
flowDraftSaved: "Brouillon enregistré",
|
|
641
|
+
flowDraftFailed: "Le brouillon n’a pas été enregistré.",
|
|
642
|
+
flowDraftFound: "Brouillon enregistré",
|
|
643
|
+
flowDraftFrom: "Vous avez un brouillon enregistré le {time}.",
|
|
644
|
+
flowDraftStale: "Les paramètres ont changé depuis l’enregistrement de ce brouillon.",
|
|
645
|
+
flowDraftResume: "Reprendre là où vous en étiez",
|
|
646
|
+
flowDraftRestart: "Recommencer",
|
|
647
|
+
flowStartFrom: "Partir de",
|
|
648
|
+
flowPresetSave: "Enregistrer comme modèle",
|
|
649
|
+
flowPresetNone: "Valeurs par défaut",
|
|
650
|
+
flowPresetsSaved: "Modèles enregistrés",
|
|
651
|
+
flowPresetApplied: "Parti de {preset}",
|
|
652
|
+
flowPresetName: "Nom du modèle",
|
|
653
|
+
flowPresetFailed: "Le modèle n’a pas été enregistré.",
|
|
654
|
+
flowPresetSaved: "Modèle {preset} enregistré",
|
|
655
|
+
flowPresetChanges: "[one]D’après {preset}, {count} modification[other]D’après {preset}, {count} modifications",
|
|
656
|
+
flowCommandTab: "Commande",
|
|
657
|
+
flowPatchTab: "JSON patch",
|
|
658
|
+
flowCommandTitle: "Commande équivalente",
|
|
659
|
+
flowPreview: "Aperçu",
|
|
660
|
+
flowPreviewLoading: "Chargement de l’aperçu…",
|
|
661
|
+
flowPreviewFailed: "Impossible de charger l’aperçu : {message}",
|
|
662
|
+
flowPreviewNone: "Rien à prévisualiser.",
|
|
663
|
+
flowConfirmMismatch: "Saisissez exactement {text} pour continuer.",
|
|
664
|
+
flowAcknowledgeNeeded: "Confirmez ceci avant d’envoyer.",
|
|
665
|
+
flowPresetCurrent: "Paramètres actuels",
|
|
666
|
+
flowPickOneByOne: "Choisissez les enregistrements un par un ou page par page.",
|
|
592
667
|
matrixRows: "Lignes",
|
|
593
668
|
matrixColumns: "Colonnes",
|
|
594
669
|
matrixSearch: "Rechercher des lignes et des colonnes",
|
|
@@ -615,6 +690,7 @@ const labels = Object.freeze({
|
|
|
615
690
|
matrixItemTotal: "{item} : {count}",
|
|
616
691
|
matrixExpandGroup: "Développer {group}",
|
|
617
692
|
matrixCollapseGroup: "Réduire {group}",
|
|
693
|
+
matrixGroupHeadingCount: "{count}",
|
|
618
694
|
matrixGroupCount: "Éléments : {count}",
|
|
619
695
|
matrixDetails: "Détails",
|
|
620
696
|
matrixClose: "Fermer",
|
|
@@ -12,6 +12,7 @@ const labels = Object.freeze({
|
|
|
12
12
|
searchWordTooShort: "Digita una parola di almeno {min} caratteri",
|
|
13
13
|
searchFailed: "Ricerca non riuscita: {error}",
|
|
14
14
|
columns: "Colonne",
|
|
15
|
+
hiddenColumns: "[one]+{count} colonna[other]+{count} colonne",
|
|
15
16
|
gridFilters: "Filtri",
|
|
16
17
|
gridFitContent: "Adatta al contenuto",
|
|
17
18
|
gridUnpin: "Sblocca",
|
|
@@ -244,7 +245,7 @@ const labels = Object.freeze({
|
|
|
244
245
|
gridExportCancelled: "Esportazione annullata",
|
|
245
246
|
gridCancelExport: "Annulla esportazione",
|
|
246
247
|
gridPrint: "Stampa",
|
|
247
|
-
gridCloseRecord: "Chiudi
|
|
248
|
+
gridCloseRecord: "Chiudi",
|
|
248
249
|
gridContains: "contiene",
|
|
249
250
|
gridStartsWith: "inizia con",
|
|
250
251
|
gridIn: "è uno tra",
|
|
@@ -589,6 +590,80 @@ const labels = Object.freeze({
|
|
|
589
590
|
flowCopied: "Copiato",
|
|
590
591
|
flowSavedIt: "L'ho salvato",
|
|
591
592
|
flowShownOnce: "Mostrato una sola volta. Copialo ora.",
|
|
593
|
+
flowTimedOut: "L’host non ha risposto in tempo.",
|
|
594
|
+
flowNoHostHook: "Nessun host risponde a questo.",
|
|
595
|
+
flowOptionsLoading: "Caricamento delle opzioni…",
|
|
596
|
+
flowOptionsFailed: "Impossibile caricare le opzioni: {message}",
|
|
597
|
+
flowRetry: "Riprova",
|
|
598
|
+
flowRunAgain: "Esegui di nuovo",
|
|
599
|
+
flowRunCheckAgain: "Esegui di nuovo «{check}»",
|
|
600
|
+
flowFieldsLoading: "Caricamento dei campi…",
|
|
601
|
+
flowFieldsFailed: "Impossibile caricare i campi: {message}",
|
|
602
|
+
flowChangedMark: "Modificato",
|
|
603
|
+
flowRecordActions: "Azioni",
|
|
604
|
+
flowRecordCell: "{column}, riga {row}",
|
|
605
|
+
flowRecordRemove: "Rimuovi la riga {row}",
|
|
606
|
+
flowRecordAdd: "Aggiungi riga",
|
|
607
|
+
flowRecordsEmpty: "Ancora nessuna riga.",
|
|
608
|
+
flowRecordProblem: "Riga {row}: {message}",
|
|
609
|
+
flowRecordsCount: "[one]{count} riga[other]{count} righe",
|
|
610
|
+
flowPickMore: "e altri {count}",
|
|
611
|
+
flowPickCount: "[one]{count} scelto[other]{count} scelti",
|
|
612
|
+
flowPickChosen: "Scelti",
|
|
613
|
+
flowPickNone: "Ancora nulla di scelto.",
|
|
614
|
+
flowChecks: "Verifiche",
|
|
615
|
+
flowCancel: "Annulla",
|
|
616
|
+
flowCheckAcknowledge: "Continua nonostante l’avviso",
|
|
617
|
+
flowCheckRunning: "Verifica in corso…",
|
|
618
|
+
flowCheckNotRun: "Non eseguita",
|
|
619
|
+
flowCheckStale: "Le risposte sono cambiate dopo la verifica",
|
|
620
|
+
flowCheckPassed: "Superata alle {time}",
|
|
621
|
+
flowCheckWarning: "Avviso alle {time}",
|
|
622
|
+
flowCheckFailed: "Non riuscita alle {time}",
|
|
623
|
+
flowCheckInvalid: "La verifica non ha dato una risposta utilizzabile.",
|
|
624
|
+
flowCheckNeeded: "Esegui «{check}» con queste risposte.",
|
|
625
|
+
flowCheckNotPassed: "«{check}» non è stata superata.",
|
|
626
|
+
flowCheckConfirmWarning: "Conferma l’avviso di «{check}».",
|
|
627
|
+
flowTasks: "Attività",
|
|
628
|
+
flowTasksProgress: "{done} di {count} attività completate",
|
|
629
|
+
flowTaskNeedsAction: "Richiede un intervento",
|
|
630
|
+
flowTaskBlocked: "Non può ancora iniziare",
|
|
631
|
+
flowTasksReview: "Rivedi e invia",
|
|
632
|
+
flowTasksIncomplete: "Completa prima le attività obbligatorie.",
|
|
633
|
+
flowBackToTasks: "Torna alle attività",
|
|
634
|
+
flowSaveAndReturn: "Salva e torna indietro",
|
|
635
|
+
flowSaveDraft: "Salva bozza",
|
|
636
|
+
flowClose: "Chiudi",
|
|
637
|
+
flowDiscardQuestion: "Scartare le risposte?",
|
|
638
|
+
flowDiscard: "Scarta",
|
|
639
|
+
flowKeepEditing: "Continua a modificare",
|
|
640
|
+
flowDraftSaved: "Bozza salvata",
|
|
641
|
+
flowDraftFailed: "La bozza non è stata salvata.",
|
|
642
|
+
flowDraftFound: "Bozza salvata",
|
|
643
|
+
flowDraftFrom: "Hai una bozza salvata il {time}.",
|
|
644
|
+
flowDraftStale: "Le impostazioni sono cambiate dopo il salvataggio di questa bozza.",
|
|
645
|
+
flowDraftResume: "Riprendi da dove avevi lasciato",
|
|
646
|
+
flowDraftRestart: "Ricomincia",
|
|
647
|
+
flowStartFrom: "Parti da",
|
|
648
|
+
flowPresetSave: "Salva come modello",
|
|
649
|
+
flowPresetNone: "Valori predefiniti",
|
|
650
|
+
flowPresetsSaved: "Modelli salvati",
|
|
651
|
+
flowPresetApplied: "Avviato da {preset}",
|
|
652
|
+
flowPresetName: "Nome del modello",
|
|
653
|
+
flowPresetFailed: "Il modello non è stato salvato.",
|
|
654
|
+
flowPresetSaved: "Modello {preset} salvato",
|
|
655
|
+
flowPresetChanges: "[one]In base a {preset}, {count} modifica[other]In base a {preset}, {count} modifiche",
|
|
656
|
+
flowCommandTab: "Comando",
|
|
657
|
+
flowPatchTab: "JSON patch",
|
|
658
|
+
flowCommandTitle: "Comando equivalente",
|
|
659
|
+
flowPreview: "Anteprima",
|
|
660
|
+
flowPreviewLoading: "Caricamento dell’anteprima…",
|
|
661
|
+
flowPreviewFailed: "Impossibile caricare l’anteprima: {message}",
|
|
662
|
+
flowPreviewNone: "Niente da visualizzare.",
|
|
663
|
+
flowConfirmMismatch: "Digita esattamente {text} per continuare.",
|
|
664
|
+
flowAcknowledgeNeeded: "Conferma prima di inviare.",
|
|
665
|
+
flowPresetCurrent: "Impostazioni attuali",
|
|
666
|
+
flowPickOneByOne: "Scegli i record uno alla volta o una pagina alla volta.",
|
|
592
667
|
matrixRows: "Righe",
|
|
593
668
|
matrixColumns: "Colonne",
|
|
594
669
|
matrixSearch: "Cerca righe e colonne",
|
|
@@ -615,6 +690,7 @@ const labels = Object.freeze({
|
|
|
615
690
|
matrixItemTotal: "{item}: {count}",
|
|
616
691
|
matrixExpandGroup: "Espandi {group}",
|
|
617
692
|
matrixCollapseGroup: "Comprimi {group}",
|
|
693
|
+
matrixGroupHeadingCount: "{count}",
|
|
618
694
|
matrixGroupCount: "Elementi: {count}",
|
|
619
695
|
matrixDetails: "Dettagli",
|
|
620
696
|
matrixClose: "Chiudi",
|
|
@@ -12,6 +12,7 @@ const labels = Object.freeze({
|
|
|
12
12
|
searchWordTooShort: "Wpisz słowo o długości co najmniej {min} znaków",
|
|
13
13
|
searchFailed: "Nie udało się wyszukać: {error}",
|
|
14
14
|
columns: "Kolumny",
|
|
15
|
+
hiddenColumns: "[one]+{count} kolumna[few]+{count} kolumny[many]+{count} kolumn[other]+{count} kolumny",
|
|
15
16
|
gridFilters: "Filtry",
|
|
16
17
|
gridFitContent: "Dopasuj do zawartości",
|
|
17
18
|
gridUnpin: "Odepnij",
|
|
@@ -244,7 +245,7 @@ const labels = Object.freeze({
|
|
|
244
245
|
gridExportCancelled: "Eksport anulowany",
|
|
245
246
|
gridCancelExport: "Anuluj eksport",
|
|
246
247
|
gridPrint: "Drukuj",
|
|
247
|
-
gridCloseRecord: "Zamknij
|
|
248
|
+
gridCloseRecord: "Zamknij",
|
|
248
249
|
gridContains: "zawiera",
|
|
249
250
|
gridStartsWith: "zaczyna się od",
|
|
250
251
|
gridIn: "jest jedną z wartości",
|
|
@@ -589,6 +590,80 @@ const labels = Object.freeze({
|
|
|
589
590
|
flowCopied: "Skopiowano",
|
|
590
591
|
flowSavedIt: "Mam to zapisane",
|
|
591
592
|
flowShownOnce: "Widoczne tylko raz. Skopiuj teraz.",
|
|
593
|
+
flowTimedOut: "Host nie odpowiedział na czas.",
|
|
594
|
+
flowNoHostHook: "Nikt po stronie hosta tego nie obsługuje.",
|
|
595
|
+
flowOptionsLoading: "Wczytywanie opcji…",
|
|
596
|
+
flowOptionsFailed: "Nie udało się wczytać opcji: {message}",
|
|
597
|
+
flowRetry: "Spróbuj ponownie",
|
|
598
|
+
flowRunAgain: "Uruchom ponownie",
|
|
599
|
+
flowRunCheckAgain: "Uruchom ponownie „{check}”",
|
|
600
|
+
flowFieldsLoading: "Wczytywanie pól…",
|
|
601
|
+
flowFieldsFailed: "Nie udało się wczytać pól: {message}",
|
|
602
|
+
flowChangedMark: "Zmieniono",
|
|
603
|
+
flowRecordActions: "Akcje",
|
|
604
|
+
flowRecordCell: "{column}, wiersz {row}",
|
|
605
|
+
flowRecordRemove: "Usuń wiersz {row}",
|
|
606
|
+
flowRecordAdd: "Dodaj wiersz",
|
|
607
|
+
flowRecordsEmpty: "Brak wierszy.",
|
|
608
|
+
flowRecordProblem: "Wiersz {row}: {message}",
|
|
609
|
+
flowRecordsCount: "[one]{count} wiersz[few]{count} wiersze[many]{count} wierszy[other]{count} wiersza",
|
|
610
|
+
flowPickMore: "i {count} więcej",
|
|
611
|
+
flowPickCount: "[one]Wybrano {count}[few]Wybrano {count}[many]Wybrano {count}[other]Wybrano {count}",
|
|
612
|
+
flowPickChosen: "Wybrane",
|
|
613
|
+
flowPickNone: "Nic jeszcze nie wybrano.",
|
|
614
|
+
flowChecks: "Testy",
|
|
615
|
+
flowCancel: "Anuluj",
|
|
616
|
+
flowCheckAcknowledge: "Kontynuuj mimo ostrzeżenia",
|
|
617
|
+
flowCheckRunning: "Sprawdzanie…",
|
|
618
|
+
flowCheckNotRun: "Nie uruchomiono",
|
|
619
|
+
flowCheckStale: "Odpowiedzi zmieniły się od testu",
|
|
620
|
+
flowCheckPassed: "Zaliczono o {time}",
|
|
621
|
+
flowCheckWarning: "Ostrzeżenie o {time}",
|
|
622
|
+
flowCheckFailed: "Niepowodzenie o {time}",
|
|
623
|
+
flowCheckInvalid: "Test nie zwrócił użytecznej odpowiedzi.",
|
|
624
|
+
flowCheckNeeded: "Uruchom „{check}” dla tych odpowiedzi.",
|
|
625
|
+
flowCheckNotPassed: "„{check}” nie przeszedł.",
|
|
626
|
+
flowCheckConfirmWarning: "Potwierdź ostrzeżenie testu „{check}”.",
|
|
627
|
+
flowTasks: "Zadania",
|
|
628
|
+
flowTasksProgress: "Ukończono zadania: {done} z {count}",
|
|
629
|
+
flowTaskNeedsAction: "Wymaga działania",
|
|
630
|
+
flowTaskBlocked: "Nie można jeszcze rozpocząć",
|
|
631
|
+
flowTasksReview: "Przejrzyj i wyślij",
|
|
632
|
+
flowTasksIncomplete: "Najpierw ukończ wymagane zadania.",
|
|
633
|
+
flowBackToTasks: "Wróć do zadań",
|
|
634
|
+
flowSaveAndReturn: "Zapisz i wróć",
|
|
635
|
+
flowSaveDraft: "Zapisz wersję roboczą",
|
|
636
|
+
flowClose: "Zamknij",
|
|
637
|
+
flowDiscardQuestion: "Odrzucić odpowiedzi?",
|
|
638
|
+
flowDiscard: "Odrzuć",
|
|
639
|
+
flowKeepEditing: "Kontynuuj edycję",
|
|
640
|
+
flowDraftSaved: "Zapisano wersję roboczą",
|
|
641
|
+
flowDraftFailed: "Nie zapisano wersji roboczej.",
|
|
642
|
+
flowDraftFound: "Zapisana wersja robocza",
|
|
643
|
+
flowDraftFrom: "Masz wersję roboczą zapisaną {time}.",
|
|
644
|
+
flowDraftStale: "Ustawienia zmieniły się po zapisaniu tej wersji roboczej.",
|
|
645
|
+
flowDraftResume: "Wznów w miejscu przerwania",
|
|
646
|
+
flowDraftRestart: "Zacznij od nowa",
|
|
647
|
+
flowStartFrom: "Zacznij od",
|
|
648
|
+
flowPresetSave: "Zapisz jako szablon",
|
|
649
|
+
flowPresetNone: "Ustawienia domyślne",
|
|
650
|
+
flowPresetsSaved: "Zapisane szablony",
|
|
651
|
+
flowPresetApplied: "Rozpoczęto od: {preset}",
|
|
652
|
+
flowPresetName: "Nazwa szablonu",
|
|
653
|
+
flowPresetFailed: "Nie zapisano szablonu.",
|
|
654
|
+
flowPresetSaved: "Zapisano szablon {preset}",
|
|
655
|
+
flowPresetChanges: "[one]Na podstawie {preset}, {count} zmiana[few]Na podstawie {preset}, {count} zmiany[many]Na podstawie {preset}, {count} zmian[other]Na podstawie {preset}, {count} zmiany",
|
|
656
|
+
flowCommandTab: "Polecenie",
|
|
657
|
+
flowPatchTab: "JSON patch",
|
|
658
|
+
flowCommandTitle: "Równoważne polecenie",
|
|
659
|
+
flowPreview: "Podgląd",
|
|
660
|
+
flowPreviewLoading: "Wczytywanie podglądu…",
|
|
661
|
+
flowPreviewFailed: "Nie udało się wczytać podglądu: {message}",
|
|
662
|
+
flowPreviewNone: "Brak podglądu.",
|
|
663
|
+
flowConfirmMismatch: "Wpisz dokładnie {text}, aby kontynuować.",
|
|
664
|
+
flowAcknowledgeNeeded: "Potwierdź to przed wysłaniem.",
|
|
665
|
+
flowPresetCurrent: "Bieżące ustawienia",
|
|
666
|
+
flowPickOneByOne: "Wybierz rekordy pojedynczo lub stronami.",
|
|
592
667
|
matrixRows: "Wiersze",
|
|
593
668
|
matrixColumns: "Kolumny",
|
|
594
669
|
matrixSearch: "Szukaj wierszy i kolumn",
|
|
@@ -615,6 +690,7 @@ const labels = Object.freeze({
|
|
|
615
690
|
matrixItemTotal: "{item}: {count}",
|
|
616
691
|
matrixExpandGroup: "Rozwiń {group}",
|
|
617
692
|
matrixCollapseGroup: "Zwiń {group}",
|
|
693
|
+
matrixGroupHeadingCount: "{count}",
|
|
618
694
|
matrixGroupCount: "Elementy: {count}",
|
|
619
695
|
matrixDetails: "Szczegóły",
|
|
620
696
|
matrixClose: "Zamknij",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(global){"use strict";const installed=new WeakSet();const part={version:"
|
|
1
|
+
(function(global){"use strict";const installed=new WeakSet();const part={version:"a27c818b731c22e3",install(context){if(installed.has(context.DataGrid.prototype))return;const{DataGrid,h,setText,fill,gridButton,gridIcon,gridQuery,gridResultShape,gridQueryRows,gridCompare,gridOrder,gridIdOrder,validateGridRows,validateGridPage,validateGridCursorPage,gridFreeze,requireIdentifier,checkDocument,cellValue,PROTOCOL,GRID_REPORTING,VIEW_MODES,inlineGridSource}=context;const LIVE_KEYS=new Set(["stableOrder","flash","batchMs","pollMs","load","announce","pauseWhenHidden"]);const LIVE_MAX_ROWS=100000;function liveOptions(view,options){const read=value=>{if(value===undefined||value===true||value===false)return{};if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).some(key=>!LIVE_KEYS.has(key)))
|
|
2
2
|
throw new Error("CanopyX: live takes stableOrder, flash, batchMs, pollMs, load, announce and pauseWhenHidden.");return value};const merged=options.live===false?{}:{...read(view.live),...read(options.live)},flash=merged.flash;const integer=(value,min,max)=>value===undefined||Number.isInteger(value)&&value>=min&&value<=max;if(["stableOrder","announce","pauseWhenHidden"].some(key=>merged[key]!==undefined&&typeof merged[key]!=="boolean")||
|
|
3
3
|
!(flash===undefined||typeof flash==="boolean"||flash&&typeof flash==="object"&&Object.keys(flash).every(key=>key==="durationMs")&&integer(flash.durationMs,100,10000))||
|
|
4
4
|
!integer(merged.batchMs,0,60000)||!(merged.pollMs===undefined||merged.pollMs===0||integer(merged.pollMs,250,86400000))||
|
|
@@ -68,8 +68,9 @@ this.lifetime.signal.addEventListener("abort",()=>{bar.remove();this.host.classL
|
|
|
68
68
|
const wasHidden=this.liveBar.hidden||this.liveBarCursor!==cursor;setText(this.liveBarText,cursor?this.labels.gridLiveNewData:this.labels.gridLiveOrderChanged);setText(this.liveBarButton,cursor?this.labels.gridLiveRefresh:this.labels.gridLiveResort);this.liveBarButton.title=cursor?"":this.labels.gridLiveOrderHint;this.liveBarCursor=cursor;if(this.liveBar.classList.contains("cx-live-float"))this.liveBar.style.top=this.grid.offsetTop+this.head.offsetHeight+6+"px";this.liveBar.hidden=false;if(wasHidden)this.liveNote(cursor?this.labels.gridLiveNewData:this.labels.gridLiveOrderChanged+". "+this.labels.gridLiveOrderHint)},liveFlash(changed){const duration=this.liveOpts?.flashMs;if(!duration||!changed.size)return;const now=performance.now(),flashes=this.liveFlashes||=new Map();for(const[id,columns]of changed){const existing=flashes.get(id),merged=columns==="*"||existing?.columns==="*"?"*":new Set([...(existing?.columns||[]),...columns]);if(merged!=="*"&&!merged.size)continue;flashes.set(id,{columns:merged,start:now,until:now+duration})}
|
|
69
69
|
clearTimeout(this.liveFlashTimer);this.liveFlashTimer=setTimeout(()=>this.liveFlashExpire(),duration+20);this.version++;this.scheduleRender()},liveFlashExpire(){if(this.destroyed||!this.liveFlashes)return;const now=performance.now();for(const[id,flash]of this.liveFlashes)if(flash.until<=now)this.liveFlashes.delete(id);if(this.liveFlashes.size)this.liveFlashTimer=setTimeout(()=>this.liveFlashExpire(),Math.max(20,Math.min(...[...this.liveFlashes.values()].map(flash=>flash.until))- now+20));this.version++;this.scheduleRender()},liveAnnounce(result){if(!this.liveOpts?.announce||!result.added.length&&!result.removed.length)return;const counts=this.liveCounts||={added:0,updated:0,removed:0};counts.added +=result.added.length;counts.updated +=result.updated.length;counts.removed +=result.removed.length;if(this.liveAnnounceTimer)return;if(!this.liveSpoke||performance.now()- this.liveSpoke>=LIVE_ANNOUNCE_MS){this.liveNote(this.liveCountText());this.liveCoolDown()}
|
|
70
70
|
else this.liveAnnounceTimer=setTimeout(()=>{this.liveAnnounceTimer=0;this.liveSay(this.liveCountText());this.liveCoolDown()},LIVE_ANNOUNCE_MS -(performance.now()- this.liveSpoke))},liveCountText(){const numbers=new Intl.NumberFormat(this.lang),counts=this.liveCounts;this.liveCounts=null;return counts?fill(this.labels.gridLiveChanged,{added:numbers.format(counts.added),updated:numbers.format(counts.updated),removed:numbers.format(counts.removed)}):""},liveCoolDown(){this.liveSpoke=performance.now();this.liveAnnounceTimer=setTimeout(()=>{this.liveAnnounceTimer=0;if(this.liveCounts&&!this.destroyed){this.liveSay(this.liveCountText());this.liveCoolDown()}},LIVE_ANNOUNCE_MS)}});const LIVE_FILL=DataGrid.prototype.fillRow;DataGrid.prototype.fillRow=function(element,row){LIVE_FILL.call(this,element,row);const flash=this.liveFlashes?.size&&!row.status&&row.key?this.liveFlashes.get(row.key):null,mark=flash?row.key+"@"+flash.start:null;if(element._cxFlash&&element._cxFlashMark===mark&&element._cxFlashLayout===element._layout)return;if(element._cxFlash){for(const cell of element._cxFlash){cell.classList.remove("cx-live-flash");cell.style.removeProperty("animation-delay")}element._cxFlash=null;element._cxFlashMark=null}
|
|
71
|
-
if(!flash||!element._cells)return;const now=performance.now();if(flash.until<=now)return;const marked=[];element._cells.forEach((slot,index)=>{const column=this.cols[index];if(!slot||!column||flash.columns!=="*"&&!flash.columns.has(column.id))return;slot.cell.classList.add("cx-live-flash");slot.cell.style.animationDelay=Math.round(flash.start-now)+ "ms";marked.push(slot.cell)});if(marked.length){element._cxFlash=marked;element._cxFlashMark=mark;element._cxFlashLayout=element._layout}};Object.assign(DataGrid.prototype,{startLive(){if(this.destroyed)throw new DOMException("Grid was destroyed.","AbortError");if(this.liveOpts)return;this.liveOpts=liveOptions(this.view,this.opts);this.liveQueue=new Map();this.liveWaiters=[];this.liveScheduled=new Set();if(this.liveOpts.flashMs)this.host.style.setProperty("--cx-live-flash-ms",this.liveOpts.flashMs+"ms");this.host.addEventListener("canopyx:query",()=>{if(this.liveOrder&&this.liveOrder.shape!==gridResultShape(this.acceptedQuery))this.liveOrder=null;this.livePending=null;this.liveMoved=false;this.liveSyncPrompt()},{signal:this.lifetime.signal});this.lifetime.signal.addEventListener("abort",()=>{clearTimeout(this.liveTimer);clearTimeout(this.liveFlashTimer);clearTimeout(this.liveAnnounceTimer);this.host.style.removeProperty("--cx-live-flash-ms");for(const waiter of this.liveWaiters.splice(0))waiter.reject(new DOMException("Grid was destroyed.","AbortError"))},{once:true});if(this.liveOpts.pollMs)this.livePoll({intervalMs:this.liveOpts.pollMs})},liveStatus(){const queued=new Set(this.liveQueue?.keys());for(const{change}of this.liveScheduled||[])if(change){for(const row of[...change.add,...change.update])queued.add(row.id);change.remove.forEach(id=>queued.add(id))}
|
|
72
|
-
return gridFreeze({orderChanged:!!(this.liveOrder?.dirty||this.livePending?.pages||this.livePending?.refresh||this.liveMoved),newData:!!this.livePending?.cursor,pending:queued.size,polling:!!this.livePoller?.active,revision:this.snapshot?.revision??null})},liveRun(task){return this.liveChain=(this.liveChain||Promise.resolve()).catch(()=>{}).then(async()=>{this.startLive();await this.liveSettle();return task()})},applyTransaction(input){return this.liveQueueChange(liveTransaction(this,input),"api")},addRows(rows){return this.applyTransaction({add:rows})},updateRows(rows){return this.applyTransaction({update:rows})},removeRows(ids){return this.applyTransaction({remove:ids})},async setRows(rows){if(!this.liveInline())throw new Error("CanopyX: setRows replaces inline rows; a hosted grid's rows change at its source, then refreshRows().");validateGridRows(rows,this.view.columns);const owned=liveCopy(rows);return this.liveQueueChange(null,"api",owned)},liveQueueChange(change,source,replacement){if(this.destroyed)return Promise.reject(new DOMException("Grid was destroyed.","AbortError"));this.startLive()
|
|
71
|
+
if(!flash||!element._cells)return;const now=performance.now();if(flash.until<=now)return;const marked=[];element._cells.forEach((slot,index)=>{const column=this.cols[index];if(!slot||!column||flash.columns!=="*"&&!flash.columns.has(column.id))return;slot.cell.classList.add("cx-live-flash");slot.cell.style.animationDelay=Math.round(flash.start-now)+ "ms";marked.push(slot.cell)});if(marked.length){element._cxFlash=marked;element._cxFlashMark=mark;element._cxFlashLayout=element._layout}};Object.assign(DataGrid.prototype,{startLive(){if(this.view.rowIdentity==="ordinal")throw new Error("CanopyX: ordinal row identity is snapshot-local; keyed live updates require stable row keys.");if(this.destroyed)throw new DOMException("Grid was destroyed.","AbortError");if(this.liveOpts)return;this.liveOpts=liveOptions(this.view,this.opts);this.liveQueue=new Map();this.liveWaiters=[];this.liveScheduled=new Set();if(this.liveOpts.flashMs)this.host.style.setProperty("--cx-live-flash-ms",this.liveOpts.flashMs+"ms");this.host.addEventListener("canopyx:query",()=>{if(this.liveOrder&&this.liveOrder.shape!==gridResultShape(this.acceptedQuery))this.liveOrder=null;this.livePending=null;this.liveMoved=false;this.liveSyncPrompt()},{signal:this.lifetime.signal});this.lifetime.signal.addEventListener("abort",()=>{clearTimeout(this.liveTimer);clearTimeout(this.liveFlashTimer);clearTimeout(this.liveAnnounceTimer);this.host.style.removeProperty("--cx-live-flash-ms");for(const waiter of this.liveWaiters.splice(0))waiter.reject(new DOMException("Grid was destroyed.","AbortError"))},{once:true});if(this.liveOpts.pollMs)this.livePoll({intervalMs:this.liveOpts.pollMs})},liveStatus(){const queued=new Set(this.liveQueue?.keys());for(const{change}of this.liveScheduled||[])if(change){for(const row of[...change.add,...change.update])queued.add(row.id);change.remove.forEach(id=>queued.add(id))}
|
|
72
|
+
return gridFreeze({orderChanged:!!(this.liveOrder?.dirty||this.livePending?.pages||this.livePending?.refresh||this.liveMoved),newData:!!this.livePending?.cursor,pending:queued.size,polling:!!this.livePoller?.active,revision:this.snapshot?.revision??null})},liveRun(task){return this.liveChain=(this.liveChain||Promise.resolve()).catch(()=>{}).then(async()=>{this.startLive();await this.liveSettle();return task()})},applyTransaction(input){return this.liveQueueChange(liveTransaction(this,input),"api")},addRows(rows){return this.applyTransaction({add:rows})},updateRows(rows){return this.applyTransaction({update:rows})},removeRows(ids){return this.applyTransaction({remove:ids})},async setRows(rows){if(!this.liveInline())throw new Error("CanopyX: setRows replaces inline rows; a hosted grid's rows change at its source, then refreshRows().");validateGridRows(rows,this.view.columns);const owned=liveCopy(rows);return this.liveQueueChange(null,"api",owned)},liveQueueChange(change,source,replacement){if(this.destroyed)return Promise.reject(new DOMException("Grid was destroyed.","AbortError"));try{this.startLive()}catch(error){return Promise.reject(error)}
|
|
73
|
+
if(this.view.source.kind==="inline"&&this.opts.source)
|
|
73
74
|
return Promise.reject(new Error("CanopyX: this grid's rows belong to its own source; change them through it (an enhanced grid's setData, addRows and removeRows)."));if(!this.liveInline()&&(change.add.length||change.remove.length))
|
|
74
75
|
return Promise.reject(new Error("CanopyX: rows of a hosted grid are added and removed at its source; call refreshRows() after."));const scheduled={change};this.liveScheduled.add(scheduled);let waiter;const promise=new Promise((resolve,reject)=>{waiter={resolve,reject}});this.liveRun(async()=>{if(replacement){await this.liveFlush().catch(()=>{});change=liveTransaction(this,liveDiff(replacement,this.liveRows()))}
|
|
75
76
|
this.liveScheduled.delete(scheduled);this.liveEnqueueChange(change,source,waiter)}).catch(error=>{this.liveScheduled.delete(scheduled);waiter.reject(error)});return promise},liveEnqueueChange(change,source,waiter){liveEnqueue(this.liveQueue,change);this.liveWaiters.push(waiter);this.liveSource=this.liveSource&&this.liveSource!==source?"api":source;if(!this.liveOpts.batchMs)this.flushTransactions().catch(()=>{});else if(!this.liveTimer)this.liveTimer=setTimeout(()=>this.flushTransactions().catch(()=>{}),this.liveOpts.batchMs)},flushTransactions(){clearTimeout(this.liveTimer);this.liveTimer=0;return this.liveRun(()=>this.liveFlush())},async liveFlush(){clearTimeout(this.liveTimer);this.liveTimer=0;const queue=this.liveQueue,waiters=this.liveWaiters.splice(0),source=this.liveSource||"api";this.liveQueue=new Map();this.liveSource=null;try{const result=queue.size?await this.liveApply(queue,source):liveResult();waiters.forEach(waiter=>waiter.resolve(result));return result}catch(error){waiters.forEach(waiter=>waiter.reject(error));throw error}},async liveSettle(){if(!this.acceptedQuery&&!this.pendingQuery)await this.ready.catch(()=>{});while(!this.destroyed&&this.pendingQuery)await new Promise(resolve=>setTimeout(resolve,16));if(this.destroyed)throw new DOMException("Grid was destroyed.","AbortError");if(!this.acceptedQuery)throw new Error("CanopyX: live changes need an accepted query.");if(this.view.rowData&&this.liveInline()){await this.source.decoded;delete this.view.rowData;this.source=inlineGridSource(this.view)}},liveInlinePages(order){const rows=this.liveRows(),size=this.pageSize;return(anchor,focus)=>{const span=Math.ceil((this.grid.clientHeight||600)/ this.rowH) + 30, offsets = new Set();
|