label enhancment

This commit is contained in:
Gregory Bednov 2025-01-29 00:04:58 +03:00
commit 63ebf54f0a
3 changed files with 75 additions and 9 deletions

View file

@ -1,7 +1,7 @@
export const stateInstrument = { export const stateInstrument = {
фиксация: 'НаМесте', фиксация: 'НаМесте',
типПрибора: 'Величина', типПрибора: 'Величина',
величина: 'Напряжение', величина: 'E',
являетсяПАЗ: false, являетсяПАЗ: false,
уточнение: null, уточнение: null,
функции: [] as string[], функции: [] as string[],
@ -16,17 +16,53 @@ export const stateMechanism = {
const функцииПоТипу = { const функцииПоТипу = {
ВыполняемаяФункция: [ ВыполняемаяФункция: [
'Сигнализация', 'Сигнализация',
'АвтоматическоеРегулирование', 'Автоматическое регулирование',
'ВеличинаОтклоненияОтЗаданной', 'Величина отклонения от заданной',
'Регистрация', 'Регистрация',
], ],
ФункциональныйПризнак: [ ФункциональныйПризнак: [
'ЧувствительныйЭлемент', 'ЧувствительныйЭлемент',
'Первичный показывающий прибор',
'Вторичный показывающий прибор',
'Станция управления',
'Включение, отключение, переключение',
'Преобразование', 'Преобразование',
'ПервичныйПоказывающийПрибор', 'Вспомогательные компьютерные устройства',
'СтанцияУправления', 'Вспомогательные вычислительные устройства',
'ВключениеОтключениеПереключение', 'QДополнительный',
'VДополнительный',
'ZДополнительный',
], ],
УточнениеВеличины: [
'Разность, перепад',
'Соотношение, доля, дробь',
'Интегрирование, суммирование по времени',
'Самосрабатывающее устройство безопасности',
'Система инструментальной безопасности',
],
}
export const letterMatcher = {
Сигнализация: 'A',
'Автоматическое регулирование': 'C',
'Величина отклонения от заданной': 'I',
Регистрация: 'R',
ЧувствительныйЭлемент: 'E',
'Первичный показывающий прибор': 'G',
'Вторичный показывающий прибор': 'I',
'Станция управления': 'K',
'Включение, отключение, переключение': 'S',
Преобразование: 'T',
'Вспомогательные компьютерные устройства': 'X',
'Вспомогательные вычислительные устройства': 'Y',
ополнительный: 'Q',
ополнительный: 'V',
ополнительный: 'Z',
'Разность, перепад': 'D',
'Соотношение, доля, дробь': 'F',
'Интегрирование, суммирование по времени': 'Q',
'Самосрабатывающее устройство безопасности': 'S',
'Система инструментальной безопасности': 'Z',
} }
export function createInstrumentForm(): HTMLElement { export function createInstrumentForm(): HTMLElement {

View file

@ -104,8 +104,8 @@ PaletteProvider.prototype.getPaletteEntries = function () {
action: { action: {
click: function () { click: function () {
var shape = elementFactory.createShape({ var shape = elementFactory.createShape({
width: 50, width: 37.795276,
height: 120, height: 37.795276,
canStartConnection: true, canStartConnection: true,
type: 'instrument', type: 'instrument',
obj: structuredClone(stateInstrument), obj: structuredClone(stateInstrument),

View file

@ -6,6 +6,7 @@ import {
create as svgCreate, create as svgCreate,
} from 'tiny-svg' } from 'tiny-svg'
import { Shape } from 'diagram-js/lib/model/Types' import { Shape } from 'diagram-js/lib/model/Types'
import { letterMatcher } from '../addObjectForm'
const HIGH_PRIORITY = 1500 const HIGH_PRIORITY = 1500
@ -84,9 +85,13 @@ function drawMechanism(shape: Shape): SVGGElement {
return g return g
} }
function drawText(x: any): string {
return x.величина + x.функции.map((u: string) => letterMatcher[u]).join('')
}
function drawInstrument(shape: Shape): SVGGElement { function drawInstrument(shape: Shape): SVGGElement {
var g = svgCreate('g') var g = svgCreate('g')
if (!shape.obj.является_паз) { if (!shape.obj.являетсяПАЗ) {
const circle = svgCreate('circle', { const circle = svgCreate('circle', {
cx: shape.width / 2, cx: shape.width / 2,
cy: shape.height / 2, cy: shape.height / 2,
@ -103,7 +108,21 @@ function drawInstrument(shape: Shape): SVGGElement {
fill: 'Canvas', fill: 'Canvas',
}) })
} }
svgAppend(g, diamond(shape.width, shape.height, 0, 0)) svgAppend(g, diamond(shape.width, shape.height, 0, 0))
svgAppend(
g,
svgCreate('rect', {
x: 0,
y: 0,
width: shape.width,
height: shape.height,
stroke: 'CanvasText',
fill: 'Canvas',
})
)
console.log(g)
} }
if (shape.obj.фиксация == 'НаЩите') { if (shape.obj.фиксация == 'НаЩите') {
svgAppend( svgAppend(
@ -118,6 +137,17 @@ function drawInstrument(shape: Shape): SVGGElement {
}) })
) )
} }
const label = svgCreate('text', {
x: shape.width / 2,
y: shape.height / 2 - 10,
'font-size': 10,
'font-family': 'Arial',
'text-anchor': 'middle',
'dominant-baseline': 'middle',
})
label.innerHTML = drawText(shape.obj)
console.log(label.innerHTML)
svgAppend(g, label)
return g return g
} }