From 80135f86902b57894b153322ec3f1802223e5974 Mon Sep 17 00:00:00 2001 From: Thomas Sindt Date: Wed, 2 Sep 2026 13:43:41 +0200 Subject: [PATCH] redesign user interface for better usability --- .../static/{ => _archiv}/css/.ignore | 0 .../static/{ => _archiv}/css/daisyui.css | 0 .../static/{js => _archiv/fonts}/.ignore | 0 .../static/_archiv/images/SimplyCPQ_Logo.svg | 45 + .../static/_archiv/images/screens/dummy.webp | Bin 0 -> 47948 bytes .../static/_archiv/images/users/tsindt.png | Bin 0 -> 17928 bytes .../xcpq_editor/static/_archiv/index.html | 259 + .../xcpq_editor/static/_archiv/js/.ignore | 0 .../xcpq_editor/static/_archiv/js/htmx.js | 5342 +++++++++++++++++ .../xcpq_editor/static/_archiv/js/htmx.min.js | 1 + .../static/_archiv/js/htmx.min.js.gz | Bin 0 -> 16588 bytes .../static/_archiv/js/index.global.js | 8 + .../xcpq_editor/static/css/simplycpq.css | 0 13 files changed, 5655 insertions(+) rename xcpq/buildtime/xcpq_editor/static/{ => _archiv}/css/.ignore (100%) rename xcpq/buildtime/xcpq_editor/static/{ => _archiv}/css/daisyui.css (100%) rename xcpq/buildtime/xcpq_editor/static/{js => _archiv/fonts}/.ignore (100%) create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/images/SimplyCPQ_Logo.svg create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/images/screens/dummy.webp create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/images/users/tsindt.png create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/index.html create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/js/.ignore create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/js/htmx.js create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/js/htmx.min.js create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/js/htmx.min.js.gz create mode 100644 xcpq/buildtime/xcpq_editor/static/_archiv/js/index.global.js create mode 100644 xcpq/buildtime/xcpq_editor/static/css/simplycpq.css diff --git a/xcpq/buildtime/xcpq_editor/static/css/.ignore b/xcpq/buildtime/xcpq_editor/static/_archiv/css/.ignore similarity index 100% rename from xcpq/buildtime/xcpq_editor/static/css/.ignore rename to xcpq/buildtime/xcpq_editor/static/_archiv/css/.ignore diff --git a/xcpq/buildtime/xcpq_editor/static/css/daisyui.css b/xcpq/buildtime/xcpq_editor/static/_archiv/css/daisyui.css similarity index 100% rename from xcpq/buildtime/xcpq_editor/static/css/daisyui.css rename to xcpq/buildtime/xcpq_editor/static/_archiv/css/daisyui.css diff --git a/xcpq/buildtime/xcpq_editor/static/js/.ignore b/xcpq/buildtime/xcpq_editor/static/_archiv/fonts/.ignore similarity index 100% rename from xcpq/buildtime/xcpq_editor/static/js/.ignore rename to xcpq/buildtime/xcpq_editor/static/_archiv/fonts/.ignore diff --git a/xcpq/buildtime/xcpq_editor/static/_archiv/images/SimplyCPQ_Logo.svg b/xcpq/buildtime/xcpq_editor/static/_archiv/images/SimplyCPQ_Logo.svg new file mode 100644 index 000000000..3088fe1da --- /dev/null +++ b/xcpq/buildtime/xcpq_editor/static/_archiv/images/SimplyCPQ_Logo.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xcpq/buildtime/xcpq_editor/static/_archiv/images/screens/dummy.webp b/xcpq/buildtime/xcpq_editor/static/_archiv/images/screens/dummy.webp new file mode 100644 index 0000000000000000000000000000000000000000..e4782c9586521cdedc81a4a2181a25dc97569d7c GIT binary patch literal 47948 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 REx0A#W5@sRPzeC=zX9Qq?_B@@ literal 0 HcmV?d00001 diff --git a/xcpq/buildtime/xcpq_editor/static/_archiv/images/users/tsindt.png b/xcpq/buildtime/xcpq_editor/static/_archiv/images/users/tsindt.png new file mode 100644 index 0000000000000000000000000000000000000000..54f4d575cf5bf9db025723f8f132323b4ce1cbbb GIT binary patch literal 17928 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 Sugbsx0000 + + + + + + + X-CPQ by Simply CPQ + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+
+ +
+
+
+

Willkommen zum X-CPQ Material Editor

+

Hier können Sie Ihre Materialien und Produkte konfigurieren und verwalten.

+ +
+

Beispiel Treeview (DaisyUI)

+
    +
  • +
    + Root +
      +
    • +
      + Child 1 +
        +
      • +
        + Child 1.1 +
          +
        • Child 1.1.1
        • +
        • Child 1.1.2
        • +
        +
        +
      • +
      • +
        + Child 1.2 +
          +
        • Child 1.2.1
        • +
        • Child 1.2.2
        • +
        +
        +
      • +
      • +
        + Child 1.3 +
          +
        • Child 1.3.1
        • +
        • Child 1.3.2
        • +
        +
        +
      • +
      +
      +
    • +
    • +
      + Child 2 +
        +
      • +
        + Child 2.1 +
          +
        • Child 2.1.1
        • +
        • Child 2.1.2
        • +
        +
        +
      • +
      • +
        + Child 2.2 +
          +
        • Child 2.2.1
        • +
        • Child 2.2.2
        • +
        +
        +
      • +
      • +
        + Child 2.3 +
          +
        • Child 2.3.1
        • +
        • Child 2.3.2
        • +
        +
        +
      • +
      +
      +
    • +
    • +
      + Child 3 +
        +
      • +
        + Child 3.1 +
          +
        • Child 3.1.1
        • +
        • Child 3.1.2
        • +
        +
        +
      • +
      • +
        + Child 3.2 +
          +
        • Child 3.2.1
        • +
        • Child 3.2.2
        • +
        +
        +
      • +
      • +
        + Child 3.3 +
          +
        • Child 3.3.1
        • +
        • Child 3.3.2
        • +
        +
        +
      • +
      +
      +
    • +
    • +
      + Child 4 +
        +
      • +
        + Child 4.1 +
          +
        • Child 4.1.1
        • +
        • Child 4.1.2
        • +
        +
        +
      • +
      • +
        + Child 4.2 +
          +
        • Child 4.2.1
        • +
        • Child 4.2.2
        • +
        +
        +
      • +
      • +
        + Child 4.3 +
          +
        • Child 4.3.1
        • +
        • Child 4.3.2
        • +
        +
        +
      • +
      +
      +
    • +
    +
    +
  • +
+
+
+
+

Eigenschaften

+

Damit in allen Produkten bei der Pflege von Eigenschaften keine Missverständnisse entstehen, gibt es bei X-CPQ einen Eigenschaften-Pool. In diesem Pool werden alle zu verwendenen Eigenschaften und deren Wertebereiche in Form von Properties und deren mögliche Werte in Form von Listen spezifiziert. Diese Properties können fachlich noch in sog. Property-Groups eingeordnet werden. Z.B. kann ich eine Eigenschaft "Farbe" definieren, die die Werte "Rot, Grün und Blau" annehmen kann. Jedem Produkt, bei welchem ich eine Eigenschaft "Farbe" habe, weise ich dann dieses Property zu nud schrenke bei Bedarf den Wertebereich ein, z.B. bei einem blauen Produkt auf "Blau". Damit verhinde ich, dass es für gleichartige Eigenschaften unterschiedliche Begriffe verwendet werden, z.B. "Farbe", "Farbton" und "Ton" bedeuten eigentlich das gleiche.

+
+
+
+
+
+
+
+ +
+ +
+ +
+ + + \ No newline at end of file diff --git a/xcpq/buildtime/xcpq_editor/static/_archiv/js/.ignore b/xcpq/buildtime/xcpq_editor/static/_archiv/js/.ignore new file mode 100644 index 000000000..e69de29bb diff --git a/xcpq/buildtime/xcpq_editor/static/_archiv/js/htmx.js b/xcpq/buildtime/xcpq_editor/static/_archiv/js/htmx.js new file mode 100644 index 000000000..4d76457bd --- /dev/null +++ b/xcpq/buildtime/xcpq_editor/static/_archiv/js/htmx.js @@ -0,0 +1,5342 @@ +var htmx = (function() { + 'use strict' + + // Public API + const htmx = { + // Tsc madness here, assigning the functions directly results in an invalid TypeScript output, but reassigning is fine + /* Event processing */ + /** @type {typeof onLoadHelper} */ + onLoad: null, + /** @type {typeof processNode} */ + process: null, + /** @type {typeof addEventListenerImpl} */ + on: null, + /** @type {typeof removeEventListenerImpl} */ + off: null, + /** @type {typeof triggerEvent} */ + trigger: null, + /** @type {typeof ajaxHelper} */ + ajax: null, + /* DOM querying helpers */ + /** @type {typeof find} */ + find: null, + /** @type {typeof findAll} */ + findAll: null, + /** @type {typeof closest} */ + closest: null, + /** + * Returns the input values that would resolve for a given element via the htmx value resolution mechanism + * + * @see https://htmx.org/api/#values + * + * @param {Element} elt the element to resolve values on + * @param {HttpVerb} type the request type (e.g. **get** or **post**) non-GET's will include the enclosing form of the element. Defaults to **post** + * @returns {Object} + */ + values: function(elt, type) { + const inputValues = getInputValues(elt, type || 'post') + return inputValues.values + }, + /* DOM manipulation helpers */ + /** @type {typeof removeElement} */ + remove: null, + /** @type {typeof addClassToElement} */ + addClass: null, + /** @type {typeof removeClassFromElement} */ + removeClass: null, + /** @type {typeof toggleClassOnElement} */ + toggleClass: null, + /** @type {typeof takeClassForElement} */ + takeClass: null, + /** @type {typeof swap} */ + swap: null, + /* Extension entrypoints */ + /** @type {typeof defineExtension} */ + defineExtension: null, + /** @type {typeof removeExtension} */ + removeExtension: null, + /* Debugging */ + /** @type {typeof logAll} */ + logAll: null, + /** @type {typeof logNone} */ + logNone: null, + /* Debugging */ + /** + * The logger htmx uses to log with + * + * @see https://htmx.org/api/#logger + */ + logger: null, + /** + * A property holding the configuration htmx uses at runtime. + * + * Note that using a [meta tag](https://htmx.org/docs/#config) is the preferred mechanism for setting these properties. + * + * @see https://htmx.org/api/#config + */ + config: { + /** + * Whether to use history. + * @type boolean + * @default true + */ + historyEnabled: true, + /** + * The number of pages to keep in **sessionStorage** for history support. + * @type number + * @default 10 + */ + historyCacheSize: 10, + /** + * @type boolean + * @default false + */ + refreshOnHistoryMiss: false, + /** + * The default swap style to use if **[hx-swap](https://htmx.org/attributes/hx-swap)** is omitted. + * @type HtmxSwapStyle + * @default 'innerHTML' + */ + defaultSwapStyle: 'innerHTML', + /** + * The default delay between receiving a response from the server and doing the swap. + * @type number + * @default 0 + */ + defaultSwapDelay: 0, + /** + * The default delay between completing the content swap and settling attributes. + * @type number + * @default 20 + */ + defaultSettleDelay: 20, + /** + * If true, htmx will inject a small amount of CSS into the page to make indicators invisible unless the **htmx-indicator** class is present. + * @type boolean + * @default true + */ + includeIndicatorStyles: true, + /** + * The class to place on indicators when a request is in flight. + * @type string + * @default 'htmx-indicator' + */ + indicatorClass: 'htmx-indicator', + /** + * The class to place on triggering elements when a request is in flight. + * @type string + * @default 'htmx-request' + */ + requestClass: 'htmx-request', + /** + * The class to temporarily place on elements that htmx has added to the DOM. + * @type string + * @default 'htmx-added' + */ + addedClass: 'htmx-added', + /** + * The class to place on target elements when htmx is in the settling phase. + * @type string + * @default 'htmx-settling' + */ + settlingClass: 'htmx-settling', + /** + * The class to place on target elements when htmx is in the swapping phase. + * @type string + * @default 'htmx-swapping' + */ + swappingClass: 'htmx-swapping', + /** + * Allows the use of eval-like functionality in htmx, to enable **hx-vars**, trigger conditions & script tag evaluation. Can be set to **false** for CSP compatibility. + * @type boolean + * @default true + */ + allowEval: true, + /** + * If set to false, disables the interpretation of script tags. + * @type boolean + * @default true + */ + allowScriptTags: true, + /** + * If set, the nonce will be added to inline scripts. + * @type string + * @default '' + */ + inlineScriptNonce: '', + /** + * If set, the nonce will be added to inline styles. + * @type string + * @default '' + */ + inlineStyleNonce: '', + /** + * The attributes to settle during the settling phase. + * @type string[] + * @default ['class', 'style', 'width', 'height'] + */ + attributesToSettle: ['class', 'style', 'width', 'height'], + /** + * Allow cross-site Access-Control requests using credentials such as cookies, authorization headers or TLS client certificates. + * @type boolean + * @default false + */ + withCredentials: false, + /** + * @type number + * @default 0 + */ + timeout: 0, + /** + * The default implementation of **getWebSocketReconnectDelay** for reconnecting after unexpected connection loss by the event code **Abnormal Closure**, **Service Restart** or **Try Again Later**. + * @type {'full-jitter' | ((retryCount:number) => number)} + * @default "full-jitter" + */ + wsReconnectDelay: 'full-jitter', + /** + * The type of binary data being received over the WebSocket connection + * @type BinaryType + * @default 'blob' + */ + wsBinaryType: 'blob', + /** + * @type string + * @default '[hx-disable], [data-hx-disable]' + */ + disableSelector: '[hx-disable], [data-hx-disable]', + /** + * @type {'auto' | 'instant' | 'smooth'} + * @default 'instant' + */ + scrollBehavior: 'instant', + /** + * If the focused element should be scrolled into view. + * @type boolean + * @default false + */ + defaultFocusScroll: false, + /** + * If set to true htmx will include a cache-busting parameter in GET requests to avoid caching partial responses by the browser + * @type boolean + * @default false + */ + getCacheBusterParam: false, + /** + * If set to true, htmx will use the View Transition API when swapping in new content. + * @type boolean + * @default false + */ + globalViewTransitions: false, + /** + * htmx will format requests with these methods by encoding their parameters in the URL, not the request body + * @type {(HttpVerb)[]} + * @default ['get', 'delete'] + */ + methodsThatUseUrlParams: ['get', 'delete'], + /** + * If set to true, disables htmx-based requests to non-origin hosts. + * @type boolean + * @default false + */ + selfRequestsOnly: true, + /** + * If set to true htmx will not update the title of the document when a title tag is found in new content + * @type boolean + * @default false + */ + ignoreTitle: false, + /** + * Whether the target of a boosted element is scrolled into the viewport. + * @type boolean + * @default true + */ + scrollIntoViewOnBoost: true, + /** + * The cache to store evaluated trigger specifications into. + * You may define a simple object to use a never-clearing cache, or implement your own system using a [proxy object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Proxy) + * @type {Object|null} + * @default null + */ + triggerSpecsCache: null, + /** @type boolean */ + disableInheritance: false, + /** @type HtmxResponseHandlingConfig[] */ + responseHandling: [ + { code: '204', swap: false }, + { code: '[23]..', swap: true }, + { code: '[45]..', swap: false, error: true } + ], + /** + * Whether to process OOB swaps on elements that are nested within the main response element. + * @type boolean + * @default true + */ + allowNestedOobSwaps: true, + /** + * Whether to treat history cache miss full page reload requests as a "HX-Request" by returning this response header + * This should always be disabled when using HX-Request header to optionally return partial responses + * @type boolean + * @default true + */ + historyRestoreAsHxRequest: true, + /** + * Whether to report input validation errors to the end user and update focus to the first input that fails validation. + * This should always be enabled as this matches default browser form submit behaviour + * @type boolean + * @default false + */ + reportValidityOfForms: false + }, + /** @type {typeof parseInterval} */ + parseInterval: null, + /** + * proxy of window.location used for page reload functions + * @type location + */ + location, + /** @type {typeof internalEval} */ + _: null, + version: '2.0.10' + } + // Tsc madness part 2 + htmx.onLoad = onLoadHelper + htmx.process = processNode + htmx.on = addEventListenerImpl + htmx.off = removeEventListenerImpl + htmx.trigger = triggerEvent + htmx.ajax = ajaxHelper + htmx.find = find + htmx.findAll = findAll + htmx.closest = closest + htmx.remove = removeElement + htmx.addClass = addClassToElement + htmx.removeClass = removeClassFromElement + htmx.toggleClass = toggleClassOnElement + htmx.takeClass = takeClassForElement + htmx.swap = swap + htmx.defineExtension = defineExtension + htmx.removeExtension = removeExtension + htmx.logAll = logAll + htmx.logNone = logNone + htmx.parseInterval = parseInterval + htmx._ = internalEval + + const internalAPI = { + addTriggerHandler, + bodyContains, + canAccessLocalStorage, + findThisElement, + filterValues, + swap, + hasAttribute, + getAttributeValue, + getClosestAttributeValue, + getClosestMatch, + getExpressionVars, + getHeaders, + getInputValues, + getInternalData, + getSwapSpecification, + getTriggerSpecs, + getTarget, + makeFragment, + mergeObjects, + makeSettleInfo, + oobSwap, + querySelectorExt, + settleImmediately, + shouldCancel, + triggerEvent, + triggerErrorEvent, + withExtensions + } + + const VERBS = ['get', 'post', 'put', 'delete', 'patch'] + const VERB_SELECTOR = VERBS.map(function(verb) { + return '[hx-' + verb + '], [data-hx-' + verb + ']' + }).join(', ') + + //= =================================================================== + // Utilities + //= =================================================================== + + /** + * Parses an interval string consistent with the way htmx does. Useful for plugins that have timing-related attributes. + * + * Caution: Accepts an int followed by either **s** or **ms**. All other values use **parseFloat** + * + * @see https://htmx.org/api/#parseInterval + * + * @param {string} str timing string + * @returns {number|undefined} + */ + function parseInterval(str) { + if (str == undefined) { + return undefined + } + + let interval = NaN + if (str.slice(-2) == 'ms') { + interval = parseFloat(str.slice(0, -2)) + } else if (str.slice(-1) == 's') { + interval = parseFloat(str.slice(0, -1)) * 1000 + } else if (str.slice(-1) == 'm') { + interval = parseFloat(str.slice(0, -1)) * 1000 * 60 + } else { + interval = parseFloat(str) + } + return isNaN(interval) ? undefined : interval + } + + /** + * @param {Node} elt + * @param {string} name + * @returns {(string | null)} + */ + function getRawAttribute(elt, name) { + return elt instanceof Element && elt.getAttribute(name) + } + + /** + * @param {Element} elt + * @param {string} qualifiedName + * @returns {boolean} + */ + // resolve with both hx and data-hx prefixes + function hasAttribute(elt, qualifiedName) { + return !!elt.hasAttribute && (elt.hasAttribute(qualifiedName) || + elt.hasAttribute('data-' + qualifiedName)) + } + + /** + * + * @param {Node} elt + * @param {string} qualifiedName + * @returns {(string | null)} + */ + function getAttributeValue(elt, qualifiedName) { + return getRawAttribute(elt, qualifiedName) || getRawAttribute(elt, 'data-' + qualifiedName) + } + + /** + * @param {Node} elt + * @returns {Node | null} + */ + function parentElt(elt) { + const parent = elt.parentElement + if (!parent && elt.parentNode instanceof ShadowRoot) return elt.parentNode + return parent + } + + /** + * @returns {Document} + */ + function getDocument() { + return document + } + + /** + * @param {Node} elt + * @param {boolean} global + * @returns {Node|Document} + */ + function getRootNode(elt, global) { + return elt.getRootNode ? elt.getRootNode({ composed: global }) : getDocument() + } + + /** + * @param {Node} elt + * @param {(e:Node) => boolean} condition + * @returns {Node | null} + */ + function getClosestMatch(elt, condition) { + while (elt && !condition(elt)) { + elt = parentElt(elt) + } + + return elt || null + } + + /** + * @param {Element} initialElement + * @param {Element} ancestor + * @param {string} attributeName + * @returns {string|null} + */ + function getAttributeValueWithDisinheritance(initialElement, ancestor, attributeName) { + const attributeValue = getAttributeValue(ancestor, attributeName) + const disinherit = getAttributeValue(ancestor, 'hx-disinherit') + var inherit = getAttributeValue(ancestor, 'hx-inherit') + if (initialElement !== ancestor) { + if (htmx.config.disableInheritance) { + if (inherit && (inherit === '*' || inherit.split(' ').indexOf(attributeName) >= 0)) { + return attributeValue + } else { + return null + } + } + if (disinherit && (disinherit === '*' || disinherit.split(' ').indexOf(attributeName) >= 0)) { + return 'unset' + } + } + return attributeValue + } + + /** + * @param {Element} elt + * @param {string} attributeName + * @returns {string | null} + */ + function getClosestAttributeValue(elt, attributeName) { + let closestAttr = null + getClosestMatch(elt, function(e) { + return !!(closestAttr = getAttributeValueWithDisinheritance(elt, asElement(e), attributeName)) + }) + if (closestAttr !== 'unset') { + return closestAttr + } + } + + /** + * @param {Node} elt + * @param {string} selector + * @returns {boolean} + */ + function matches(elt, selector) { + return elt instanceof Element && elt.matches(selector) + } + + /** + * @param {string} str + * @returns {string} + */ + function getStartTag(str) { + const tagMatcher = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i + const match = tagMatcher.exec(str) + if (match) { + return match[1].toLowerCase() + } else { + return '' + } + } + + /** + * @param {string} resp + * @returns {Document} + */ + function parseHTML(resp) { + if ('parseHTMLUnsafe' in Document) { + return Document.parseHTMLUnsafe(resp) + } + const parser = new DOMParser() + return parser.parseFromString(resp, 'text/html') + } + + /** + * @param {DocumentFragment} fragment + * @param {Node} elt + */ + function takeChildrenFor(fragment, elt) { + while (elt.childNodes.length > 0) { + fragment.append(elt.childNodes[0]) + } + } + + /** + * @param {HTMLScriptElement} script + * @returns {HTMLScriptElement} + */ + function duplicateScript(script) { + const newScript = getDocument().createElement('script') + forEach(script.attributes, function(attr) { + newScript.setAttribute(attr.name, attr.value) + }) + newScript.textContent = script.textContent + newScript.async = false + if (htmx.config.inlineScriptNonce) { + newScript.nonce = htmx.config.inlineScriptNonce + } + return newScript + } + + /** + * @param {HTMLScriptElement} script + * @returns {boolean} + */ + function isJavaScriptScriptNode(script) { + return script.matches('script') && (script.type === 'text/javascript' || script.type === 'module' || script.type === '') + } + + /** + * we have to make new copies of script tags that we are going to insert because + * SOME browsers (not saying who, but it involves an element and an animal) don't + * execute scripts created in