You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			247 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			247 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
"use strict";
 | 
						|
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([[1616],{
 | 
						|
 | 
						|
/***/ 18556:
 | 
						|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | 
						|
 | 
						|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
 | 
						|
/* harmony export */   A: () => (/* binding */ populateCommonDb)
 | 
						|
/* harmony export */ });
 | 
						|
/* harmony import */ var _chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(74999);
 | 
						|
 | 
						|
 | 
						|
// src/diagrams/common/populateCommonDb.ts
 | 
						|
function populateCommonDb(ast, db) {
 | 
						|
  if (ast.accDescr) {
 | 
						|
    db.setAccDescription?.(ast.accDescr);
 | 
						|
  }
 | 
						|
  if (ast.accTitle) {
 | 
						|
    db.setAccTitle?.(ast.accTitle);
 | 
						|
  }
 | 
						|
  if (ast.title) {
 | 
						|
    db.setDiagramTitle?.(ast.title);
 | 
						|
  }
 | 
						|
}
 | 
						|
(0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_0__/* .__name */ .eW)(populateCommonDb, "populateCommonDb");
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/***/ }),
 | 
						|
 | 
						|
/***/ 1616:
 | 
						|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | 
						|
 | 
						|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
 | 
						|
/* harmony export */   diagram: () => (/* binding */ diagram)
 | 
						|
/* harmony export */ });
 | 
						|
/* harmony import */ var _chunk_EXTU4WIE_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(98154);
 | 
						|
/* harmony import */ var _chunk_4BX2VUAB_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18556);
 | 
						|
/* harmony import */ var _chunk_S3R3BYOJ_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17175);
 | 
						|
/* harmony import */ var _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61805);
 | 
						|
/* harmony import */ var _chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74999);
 | 
						|
/* harmony import */ var _mermaid_js_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13197);
 | 
						|
/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35321);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// src/diagrams/pie/pieParser.ts
 | 
						|
 | 
						|
 | 
						|
// src/diagrams/pie/pieDb.ts
 | 
						|
var DEFAULT_PIE_CONFIG = _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .defaultConfig_default */ .vZ.pie;
 | 
						|
var DEFAULT_PIE_DB = {
 | 
						|
  sections: /* @__PURE__ */ new Map(),
 | 
						|
  showData: false,
 | 
						|
  config: DEFAULT_PIE_CONFIG
 | 
						|
};
 | 
						|
var sections = DEFAULT_PIE_DB.sections;
 | 
						|
var showData = DEFAULT_PIE_DB.showData;
 | 
						|
var config = structuredClone(DEFAULT_PIE_CONFIG);
 | 
						|
var getConfig2 = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)(() => structuredClone(config), "getConfig");
 | 
						|
var clear2 = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)(() => {
 | 
						|
  sections = /* @__PURE__ */ new Map();
 | 
						|
  showData = DEFAULT_PIE_DB.showData;
 | 
						|
  (0,_chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .clear */ .ZH)();
 | 
						|
}, "clear");
 | 
						|
var addSection = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)(({ label, value }) => {
 | 
						|
  if (value < 0) {
 | 
						|
    throw new Error(
 | 
						|
      `"${label}" has invalid value: ${value}. Negative values are not allowed in pie charts. All slice values must be >= 0.`
 | 
						|
    );
 | 
						|
  }
 | 
						|
  if (!sections.has(label)) {
 | 
						|
    sections.set(label, value);
 | 
						|
    _chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .log */ .cM.debug(`added new section: ${label}, with value: ${value}`);
 | 
						|
  }
 | 
						|
}, "addSection");
 | 
						|
var getSections = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)(() => sections, "getSections");
 | 
						|
var setShowData = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)((toggle) => {
 | 
						|
  showData = toggle;
 | 
						|
}, "setShowData");
 | 
						|
var getShowData = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)(() => showData, "getShowData");
 | 
						|
var db = {
 | 
						|
  getConfig: getConfig2,
 | 
						|
  clear: clear2,
 | 
						|
  setDiagramTitle: _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .setDiagramTitle */ .g2,
 | 
						|
  getDiagramTitle: _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .getDiagramTitle */ .Kr,
 | 
						|
  setAccTitle: _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .setAccTitle */ .GN,
 | 
						|
  getAccTitle: _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .getAccTitle */ .eu,
 | 
						|
  setAccDescription: _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .setAccDescription */ .U$,
 | 
						|
  getAccDescription: _chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .getAccDescription */ .Mx,
 | 
						|
  addSection,
 | 
						|
  getSections,
 | 
						|
  setShowData,
 | 
						|
  getShowData
 | 
						|
};
 | 
						|
 | 
						|
// src/diagrams/pie/pieParser.ts
 | 
						|
var populateDb = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)((ast, db2) => {
 | 
						|
  (0,_chunk_4BX2VUAB_mjs__WEBPACK_IMPORTED_MODULE_1__/* .populateCommonDb */ .A)(ast, db2);
 | 
						|
  db2.setShowData(ast.showData);
 | 
						|
  ast.sections.map(db2.addSection);
 | 
						|
}, "populateDb");
 | 
						|
var parser = {
 | 
						|
  parse: /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)(async (input) => {
 | 
						|
    const ast = await (0,_mermaid_js_parser__WEBPACK_IMPORTED_MODULE_5__/* .parse */ .Qc)("pie", input);
 | 
						|
    _chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .log */ .cM.debug(ast);
 | 
						|
    populateDb(ast, db);
 | 
						|
  }, "parse")
 | 
						|
};
 | 
						|
 | 
						|
// src/diagrams/pie/pieStyles.ts
 | 
						|
var getStyles = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)((options) => `
 | 
						|
  .pieCircle{
 | 
						|
    stroke: ${options.pieStrokeColor};
 | 
						|
    stroke-width : ${options.pieStrokeWidth};
 | 
						|
    opacity : ${options.pieOpacity};
 | 
						|
  }
 | 
						|
  .pieOuterCircle{
 | 
						|
    stroke: ${options.pieOuterStrokeColor};
 | 
						|
    stroke-width: ${options.pieOuterStrokeWidth};
 | 
						|
    fill: none;
 | 
						|
  }
 | 
						|
  .pieTitleText {
 | 
						|
    text-anchor: middle;
 | 
						|
    font-size: ${options.pieTitleTextSize};
 | 
						|
    fill: ${options.pieTitleTextColor};
 | 
						|
    font-family: ${options.fontFamily};
 | 
						|
  }
 | 
						|
  .slice {
 | 
						|
    font-family: ${options.fontFamily};
 | 
						|
    fill: ${options.pieSectionTextColor};
 | 
						|
    font-size:${options.pieSectionTextSize};
 | 
						|
    // fill: white;
 | 
						|
  }
 | 
						|
  .legend text {
 | 
						|
    fill: ${options.pieLegendTextColor};
 | 
						|
    font-family: ${options.fontFamily};
 | 
						|
    font-size: ${options.pieLegendTextSize};
 | 
						|
  }
 | 
						|
`, "getStyles");
 | 
						|
var pieStyles_default = getStyles;
 | 
						|
 | 
						|
// src/diagrams/pie/pieRenderer.ts
 | 
						|
 | 
						|
var createPieArcs = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)((sections2) => {
 | 
						|
  const sum = [...sections2.values()].reduce((acc, val) => acc + val, 0);
 | 
						|
  const pieData = [...sections2.entries()].map(([label, value]) => ({ label, value })).filter((d) => d.value / sum * 100 >= 1).sort((a, b) => b.value - a.value);
 | 
						|
  const pie = (0,d3__WEBPACK_IMPORTED_MODULE_6__/* .pie */ .ve8)().value((d) => d.value);
 | 
						|
  return pie(pieData);
 | 
						|
}, "createPieArcs");
 | 
						|
var draw = /* @__PURE__ */ (0,_chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .__name */ .eW)((text, id, _version, diagObj) => {
 | 
						|
  _chunk_AGHRB4JF_mjs__WEBPACK_IMPORTED_MODULE_4__/* .log */ .cM.debug("rendering pie chart\n" + text);
 | 
						|
  const db2 = diagObj.db;
 | 
						|
  const globalConfig = (0,_chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .getConfig2 */ .nV)();
 | 
						|
  const pieConfig = (0,_chunk_S3R3BYOJ_mjs__WEBPACK_IMPORTED_MODULE_2__/* .cleanAndMerge */ .Rb)(db2.getConfig(), globalConfig.pie);
 | 
						|
  const MARGIN = 40;
 | 
						|
  const LEGEND_RECT_SIZE = 18;
 | 
						|
  const LEGEND_SPACING = 4;
 | 
						|
  const height = 450;
 | 
						|
  const pieWidth = height;
 | 
						|
  const svg = (0,_chunk_EXTU4WIE_mjs__WEBPACK_IMPORTED_MODULE_0__/* .selectSvgElement */ .P)(id);
 | 
						|
  const group = svg.append("g");
 | 
						|
  group.attr("transform", "translate(" + pieWidth / 2 + "," + height / 2 + ")");
 | 
						|
  const { themeVariables } = globalConfig;
 | 
						|
  let [outerStrokeWidth] = (0,_chunk_S3R3BYOJ_mjs__WEBPACK_IMPORTED_MODULE_2__/* .parseFontSize */ .VG)(themeVariables.pieOuterStrokeWidth);
 | 
						|
  outerStrokeWidth ??= 2;
 | 
						|
  const textPosition = pieConfig.textPosition;
 | 
						|
  const radius = Math.min(pieWidth, height) / 2 - MARGIN;
 | 
						|
  const arcGenerator = (0,d3__WEBPACK_IMPORTED_MODULE_6__/* .arc */ .Nb1)().innerRadius(0).outerRadius(radius);
 | 
						|
  const labelArcGenerator = (0,d3__WEBPACK_IMPORTED_MODULE_6__/* .arc */ .Nb1)().innerRadius(radius * textPosition).outerRadius(radius * textPosition);
 | 
						|
  group.append("circle").attr("cx", 0).attr("cy", 0).attr("r", radius + outerStrokeWidth / 2).attr("class", "pieOuterCircle");
 | 
						|
  const sections2 = db2.getSections();
 | 
						|
  const arcs = createPieArcs(sections2);
 | 
						|
  const myGeneratedColors = [
 | 
						|
    themeVariables.pie1,
 | 
						|
    themeVariables.pie2,
 | 
						|
    themeVariables.pie3,
 | 
						|
    themeVariables.pie4,
 | 
						|
    themeVariables.pie5,
 | 
						|
    themeVariables.pie6,
 | 
						|
    themeVariables.pie7,
 | 
						|
    themeVariables.pie8,
 | 
						|
    themeVariables.pie9,
 | 
						|
    themeVariables.pie10,
 | 
						|
    themeVariables.pie11,
 | 
						|
    themeVariables.pie12
 | 
						|
  ];
 | 
						|
  let sum = 0;
 | 
						|
  sections2.forEach((section) => {
 | 
						|
    sum += section;
 | 
						|
  });
 | 
						|
  const filteredArcs = arcs.filter((datum) => (datum.data.value / sum * 100).toFixed(0) !== "0");
 | 
						|
  const color = (0,d3__WEBPACK_IMPORTED_MODULE_6__/* .scaleOrdinal */ .PKp)(myGeneratedColors);
 | 
						|
  group.selectAll("mySlices").data(filteredArcs).enter().append("path").attr("d", arcGenerator).attr("fill", (datum) => {
 | 
						|
    return color(datum.data.label);
 | 
						|
  }).attr("class", "pieCircle");
 | 
						|
  group.selectAll("mySlices").data(filteredArcs).enter().append("text").text((datum) => {
 | 
						|
    return (datum.data.value / sum * 100).toFixed(0) + "%";
 | 
						|
  }).attr("transform", (datum) => {
 | 
						|
    return "translate(" + labelArcGenerator.centroid(datum) + ")";
 | 
						|
  }).style("text-anchor", "middle").attr("class", "slice");
 | 
						|
  group.append("text").text(db2.getDiagramTitle()).attr("x", 0).attr("y", -(height - 50) / 2).attr("class", "pieTitleText");
 | 
						|
  const allSectionData = [...sections2.entries()].map(([label, value]) => ({
 | 
						|
    label,
 | 
						|
    value
 | 
						|
  }));
 | 
						|
  const legend = group.selectAll(".legend").data(allSectionData).enter().append("g").attr("class", "legend").attr("transform", (_datum, index) => {
 | 
						|
    const height2 = LEGEND_RECT_SIZE + LEGEND_SPACING;
 | 
						|
    const offset = height2 * allSectionData.length / 2;
 | 
						|
    const horizontal = 12 * LEGEND_RECT_SIZE;
 | 
						|
    const vertical = index * height2 - offset;
 | 
						|
    return "translate(" + horizontal + "," + vertical + ")";
 | 
						|
  });
 | 
						|
  legend.append("rect").attr("width", LEGEND_RECT_SIZE).attr("height", LEGEND_RECT_SIZE).style("fill", (d) => color(d.label)).style("stroke", (d) => color(d.label));
 | 
						|
  legend.append("text").attr("x", LEGEND_RECT_SIZE + LEGEND_SPACING).attr("y", LEGEND_RECT_SIZE - LEGEND_SPACING).text((d) => {
 | 
						|
    if (db2.getShowData()) {
 | 
						|
      return `${d.label} [${d.value}]`;
 | 
						|
    }
 | 
						|
    return d.label;
 | 
						|
  });
 | 
						|
  const longestTextWidth = Math.max(
 | 
						|
    ...legend.selectAll("text").nodes().map((node) => node?.getBoundingClientRect().width ?? 0)
 | 
						|
  );
 | 
						|
  const totalWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth;
 | 
						|
  svg.attr("viewBox", `0 0 ${totalWidth} ${height}`);
 | 
						|
  (0,_chunk_ABZYJK2D_mjs__WEBPACK_IMPORTED_MODULE_3__/* .configureSvgSize */ .v2)(svg, height, totalWidth, pieConfig.useMaxWidth);
 | 
						|
}, "draw");
 | 
						|
var renderer = { draw };
 | 
						|
 | 
						|
// src/diagrams/pie/pieDiagram.ts
 | 
						|
var diagram = {
 | 
						|
  parser,
 | 
						|
  db,
 | 
						|
  renderer,
 | 
						|
  styles: pieStyles_default
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/***/ })
 | 
						|
 | 
						|
}]);
 | 
						|
//# sourceMappingURL=1616.ee161d92c1ef1d77afcc.js.map?v=ee161d92c1ef1d77afcc
 |