From e6a7f3dde5cf7b11d3ccb27a82c6cd7f040e47b6 Mon Sep 17 00:00:00 2001 From: Bill Date: Tue, 3 Aug 2021 14:07:45 -0400 Subject: [PATCH] Add stuff skelly missed --- .vscode/settings.json | 1 + .../json/figuredata/IFigureDataColor.ts | 10 +++--- .../json/figuredata/IFigureDataHiddenLayer.ts | 4 +++ .../json/figuredata/IFigureDataPart.ts | 10 +++--- src/mapping/json/figuredata/IFigureDataSet.ts | 17 +++++---- .../json/figuredata/IFigureDataSetType.ts | 14 ++++---- src/mapping/json/figuredata/index.ts | 1 + src/mapping/mappers/FigureDataMapper.ts | 27 ++++++++++++++ .../figuredata/FigureDataHiddenLayerXML.ts | 16 +++++++++ .../xml/figuredata/FigureDataSetXML.ts | 35 +++++++++++++++++-- src/mapping/xml/figuredata/index.ts | 1 + 11 files changed, 109 insertions(+), 27 deletions(-) create mode 100644 src/mapping/json/figuredata/IFigureDataHiddenLayer.ts create mode 100644 src/mapping/xml/figuredata/FigureDataHiddenLayerXML.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 7b328b8..98e959b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,7 @@ "typescript.format.placeOpenBraceOnNewLineForFunctions": true, "editor.codeActionsOnSave": { "source.fixAll": true, + "source.fixAll.sortJSON": false, "source.organizeImports": true, }, "emmet.showExpandedAbbreviation": "never", diff --git a/src/mapping/json/figuredata/IFigureDataColor.ts b/src/mapping/json/figuredata/IFigureDataColor.ts index 76a65fd..535dead 100644 --- a/src/mapping/json/figuredata/IFigureDataColor.ts +++ b/src/mapping/json/figuredata/IFigureDataColor.ts @@ -1,8 +1,8 @@ export interface IFigureDataColor { - id?: number; - index?: number; - club?: number; - selectable?: boolean; - hexCode?: string; + id?: number; + index?: number; + club?: number; + selectable?: boolean; + hexCode?: string; } diff --git a/src/mapping/json/figuredata/IFigureDataHiddenLayer.ts b/src/mapping/json/figuredata/IFigureDataHiddenLayer.ts new file mode 100644 index 0000000..80f42e6 --- /dev/null +++ b/src/mapping/json/figuredata/IFigureDataHiddenLayer.ts @@ -0,0 +1,4 @@ +export interface IFigureDataHiddenLayer +{ + partType?: string; +} diff --git a/src/mapping/json/figuredata/IFigureDataPart.ts b/src/mapping/json/figuredata/IFigureDataPart.ts index 99e89f2..e57ef47 100644 --- a/src/mapping/json/figuredata/IFigureDataPart.ts +++ b/src/mapping/json/figuredata/IFigureDataPart.ts @@ -1,8 +1,8 @@ export interface IFigureDataPart { - id?: number; - type?: string; - colorable?: boolean; - index?: number; - colorindex?: number; + id?: number; + type?: string; + colorable?: boolean; + index?: number; + colorindex?: number; } diff --git a/src/mapping/json/figuredata/IFigureDataSet.ts b/src/mapping/json/figuredata/IFigureDataSet.ts index c17941a..f3c89d9 100644 --- a/src/mapping/json/figuredata/IFigureDataSet.ts +++ b/src/mapping/json/figuredata/IFigureDataSet.ts @@ -1,12 +1,15 @@ +import { IFigureDataHiddenLayer } from './IFigureDataHiddenLayer'; import { IFigureDataPart } from './IFigureDataPart'; export interface IFigureDataSet { - id?: number; - gender?: string; - club?: boolean; - colorable?: boolean; - selectable?: boolean; - preselectable?: boolean; - parts?: IFigureDataPart[]; + id?: number; + gender?: string; + club?: number; + colorable?: boolean; + selectable?: boolean; + preselectable?: boolean; + sellable?: boolean; + parts?: IFigureDataPart[]; + hiddenLayers?: IFigureDataHiddenLayer[]; } diff --git a/src/mapping/json/figuredata/IFigureDataSetType.ts b/src/mapping/json/figuredata/IFigureDataSetType.ts index ab87638..d9a2d97 100644 --- a/src/mapping/json/figuredata/IFigureDataSetType.ts +++ b/src/mapping/json/figuredata/IFigureDataSetType.ts @@ -2,11 +2,11 @@ import { IFigureDataSet } from './IFigureDataSet'; export interface IFigureDataSetType { - type?: string; - paletteId?: number; - mandatory_m_0?: boolean; - mandatory_f_0?: boolean; - mandatory_m_1?: boolean; - mandatory_f_1?: boolean; - sets?: IFigureDataSet[]; + type?: string; + paletteId?: number; + mandatory_m_0?: boolean; + mandatory_f_0?: boolean; + mandatory_m_1?: boolean; + mandatory_f_1?: boolean; + sets?: IFigureDataSet[]; } diff --git a/src/mapping/json/figuredata/index.ts b/src/mapping/json/figuredata/index.ts index 192b5ec..579987b 100644 --- a/src/mapping/json/figuredata/index.ts +++ b/src/mapping/json/figuredata/index.ts @@ -1,5 +1,6 @@ export * from './IFigureData'; export * from './IFigureDataColor'; +export * from './IFigureDataHiddenLayer'; export * from './IFigureDataPalette'; export * from './IFigureDataPart'; export * from './IFigureDataSet'; diff --git a/src/mapping/mappers/FigureDataMapper.ts b/src/mapping/mappers/FigureDataMapper.ts index 43392f1..8b50a40 100644 --- a/src/mapping/mappers/FigureDataMapper.ts +++ b/src/mapping/mappers/FigureDataMapper.ts @@ -1,5 +1,7 @@ +import { IFigureDataHiddenLayer } from '../json'; import { IFigureDataPalette } from '../json/figuredata/IFigureDataPalette'; import { IFigureDataSet } from '../json/figuredata/IFigureDataSet'; +import { FigureDataHiddenLayerXML } from '../xml'; import { FigureDataColorXML } from '../xml/figuredata/FigureDataColorXML'; import { FigureDataPaletteXML } from '../xml/figuredata/FigureDataPaletteXML'; import { FigureDataXML } from '../xml/figuredata/FigureDataXML'; @@ -131,6 +133,7 @@ export class FigureDataMapper extends Mapper if(setXML.colorable !== undefined) setType.colorable = setXML.colorable; if(setXML.selectable !== undefined) setType.selectable = setXML.selectable; if(setXML.preselectable !== undefined) setType.preselectable = setXML.preselectable; + if(setXML.sellable !== undefined) setType.sellable = setXML.sellable; if(setXML.parts !== undefined) { @@ -142,6 +145,16 @@ export class FigureDataMapper extends Mapper } } + if(setXML.hiddenLayers !== undefined) + { + if(setXML.hiddenLayers.length) + { + setType.hiddenLayers = []; + + FigureDataMapper.mapFigureDataHiddenLayers(setXML.hiddenLayers, setType.hiddenLayers); + } + } + output.push(setType); } } @@ -163,4 +176,18 @@ export class FigureDataMapper extends Mapper output.push(part); } } + + private static mapFigureDataHiddenLayers(xml: FigureDataHiddenLayerXML[], output: IFigureDataHiddenLayer[]): void + { + if(!xml || !xml.length || !output) return; + + for(const hiddenLayerXML of xml) + { + const hiddenLayer: IFigureDataHiddenLayer = {}; + + if(hiddenLayerXML.partType !== undefined) hiddenLayer.partType = hiddenLayerXML.partType; + + output.push(hiddenLayer); + } + } } diff --git a/src/mapping/xml/figuredata/FigureDataHiddenLayerXML.ts b/src/mapping/xml/figuredata/FigureDataHiddenLayerXML.ts new file mode 100644 index 0000000..bbba173 --- /dev/null +++ b/src/mapping/xml/figuredata/FigureDataHiddenLayerXML.ts @@ -0,0 +1,16 @@ +export class FigureDataHiddenLayerXML +{ + private _partType: string; + + constructor(xml: any) + { + const attributes = xml.$; + + this._partType = ((attributes && attributes.parttype) || ''); + } + + public get partType(): string + { + return this._partType; + } +} diff --git a/src/mapping/xml/figuredata/FigureDataSetXML.ts b/src/mapping/xml/figuredata/FigureDataSetXML.ts index ca65f24..b4bc094 100644 --- a/src/mapping/xml/figuredata/FigureDataSetXML.ts +++ b/src/mapping/xml/figuredata/FigureDataSetXML.ts @@ -1,14 +1,17 @@ +import { FigureDataHiddenLayerXML } from './FigureDataHiddenLayerXML'; import { FigureDataPartXML } from './FigureDataPartXML'; export class FigureDataSetXML { private _id: number; private _gender: string; - private _club: boolean; + private _club: number; private _colorable: boolean; private _selectable: boolean; private _preselectable: boolean; + private _sellable: boolean; private _parts: FigureDataPartXML[]; + private _hiddenLayers: FigureDataHiddenLayerXML[]; constructor(xml: any) { @@ -16,10 +19,11 @@ export class FigureDataSetXML this._id = ((attributes && parseInt(attributes.id)) || 0); this._gender = ((attributes && attributes.gender) || ''); - this._club = ((attributes && parseInt(attributes.club) === 1) || false); + this._club = ((attributes && parseInt(attributes.club)) || 0); this._colorable = ((attributes && parseInt(attributes.colorable) === 1) || false); this._selectable = ((attributes && parseInt(attributes.selectable) === 1) || false); this._preselectable = ((attributes && parseInt(attributes.preselectable) === 1) || false); + this._sellable = ((attributes && parseInt(attributes.sellable) === 1) || false); if(xml.part !== undefined) { @@ -35,6 +39,21 @@ export class FigureDataSetXML } } } + + if(xml.hiddenlayers !== undefined) + { + this._hiddenLayers = []; + + for(const hiddenLayer of xml.hiddenlayers) + { + const layers = hiddenLayer.layer; + + if(layers !== undefined) + { + if(Array.isArray(layers)) for(const layer of layers) this._hiddenLayers.push(new FigureDataHiddenLayerXML(layer)); + } + } + } } public get id(): number @@ -47,7 +66,7 @@ export class FigureDataSetXML return this._gender; } - public get club(): boolean + public get club(): number { return this._club; } @@ -67,8 +86,18 @@ export class FigureDataSetXML return this._preselectable; } + public get sellable(): boolean + { + return this._sellable; + } + public get parts(): FigureDataPartXML[] { return this._parts; } + + public get hiddenLayers(): FigureDataHiddenLayerXML[] + { + return this._hiddenLayers; + } } diff --git a/src/mapping/xml/figuredata/index.ts b/src/mapping/xml/figuredata/index.ts index bbafa13..9a4ab5e 100644 --- a/src/mapping/xml/figuredata/index.ts +++ b/src/mapping/xml/figuredata/index.ts @@ -1,4 +1,5 @@ export * from './FigureDataColorXML'; +export * from './FigureDataHiddenLayerXML'; export * from './FigureDataPaletteXML'; export * from './FigureDataPartXML'; export * from './FigureDataSetTypeXML';