LCOV - code coverage report
Current view: top level - src/components/SSVGPropEdit - TransformEditValues.vue.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 3 22 13.6 %
Date: 2025-06-29 02:18:36 Functions: 1 10 10.0 %

          Line data    Source code
       1             : // @ts-check
       2             : 
       3             : import Vue from "vue";
       4             : import { parser } from "@cern/ssvg-engine";
       5             : import { findIndex, isEmpty, map } from "lodash";
       6             : import { BaseLogger as logger } from "@cern/base-vue";
       7             : import d from "debug";
       8             : import { transformArgsStr } from "../../utils/ssvg";
       9             : 
      10           1 : const debug = d("app:edit");
      11             : 
      12             : /**
      13             :  * @typedef {any} EndEvent
      14             :  */
      15             : 
      16           1 : const component = /** @type {V.Constructor<any, any>} */ (Vue).extend({
      17             :   name: "TransformEditValues",
      18             :   props: { value: { type: String, default: "" } },
      19             :   /**
      20             :    * @return {{
      21             :    *   transformList: ssvg.$Transform[]|null, showReset: boolean
      22             :    * }}
      23             :    */
      24           1 :   data() { return { transformList: null, showReset: false }; },
      25             :   watch: {
      26             :     value() {
      27           0 :       try {
      28           0 :         this.transformList = parser.parseTTransform(this.value);
      29             :       }
      30             :       catch (e) {
      31           0 :         logger.error("failed to parse transform: " + e);
      32             :       }
      33             :     }
      34             :   },
      35             :   methods: {
      36             :     onEdit() {
      37           0 :       if (!this.transformList) { return; }
      38           0 :       this.showReset = true;
      39           0 :       const idx = findIndex(this.transformList,
      40           0 :         (t) => (isEmpty(t.transform) || isEmpty(t.args)));
      41           0 :       if (idx >= 0) {
      42           0 :         debug("invalid transformation: %j", this.transformList[idx]);
      43             :       }
      44             :       else {
      45           0 :         this.$emit("edit", this.editValue());
      46             :       }
      47             :     },
      48             :     editValue() {
      49           0 :       return map(this.transformList,
      50           0 :         (transform) => `${transform.transform}(${transformArgsStr(transform.args, transform.units)})`).join(" ");
      51             :     },
      52             :     /**
      53             :      * @param {ssvg.$Transform} transform
      54             :      * @param {number} index
      55             :      * @param {number} value
      56             :      */
      57             :     setValue(transform, index, value) {
      58           0 :       transform.args[index] = value;
      59           0 :       this.onEdit();
      60             :     },
      61             :     /**
      62             :      * @param {ssvg.$Transform} transform
      63             :      * @param {number} index
      64             :      * @param {string} value
      65             :      */
      66             :     setUnit(transform, index, value) {
      67           0 :       transform.units[index] = value;
      68           0 :       this.onEdit();
      69             :     },
      70             :     /**
      71             :      * @param  {number[]} args
      72             :      * @param  {(string|null)[]} units
      73             :      * @return {string}
      74             :      */
      75             :     transformArgsStr(args, units) {
      76           0 :       return transformArgsStr(args, units);
      77             :     },
      78             :     doReset() {
      79           0 :       this.showReset = false;
      80           0 :       this.$emit("reset");
      81             :     }
      82             :   }
      83             : });
      84             : export default component;

Generated by: LCOV version 1.16