UNPKG

armisa-models

Version:
133 lines (117 loc) 5.61 kB
import { MainStateManager } from "./MainStateManager"; import { IFinancialPeriod, FinancialPeriod } from "./FinancialPeriods"; import { TabPageData } from "./Page/Tab/TabData"; import { BasePageData } from "./Page/BasePageData"; export interface IData { id: number, isActive: boolean, name: string, caption: string, financialPeriods: IFinancialPeriod[]; owner?: boolean, } export class Data { public financialPeriods: FinancialPeriod[] = []; constructor( public mainStateManager: MainStateManager, public id: number, public isActive: boolean, public name: string, public caption: string, public owner?: boolean, ) { } } export class Dataing { public waitForChangeData: boolean = false; public waitForChangeFinancialPeriod?: string; changeToSelectedDataAndFinancialPeriod = () => { if (this.waitForBeingActiveData && this.waitForBeingActiveFinancialPeriod) { this.waitForChangeData = true; this.pageData.Eventing.trigger('form.waitLoading'); // this.mainStateManager.Usering.LoginFactory.startToChangeDataBase(this.waitForBeingActiveData.id, this.waitForBeingActiveFinancialPeriod.id, true); } } closeSelectModel = () => { } // selectActiveData = () => { // if (this.mainStateManager.Tabing.tabs.length === 0 && this.mainStateManager.Modaling.modals.length === 0) { // this.mainStateManager.Modaling.addModalPage('select-active-data', 40, 80); // } // } goToNextRow = () => { const lengths = this.datas.length - 1; const focusIndex = this.datas.findIndex(i => i === this.waitForBeingActiveData); if (focusIndex > -1 && focusIndex + 1 <= lengths) { this.waitForBeingActiveData = this.datas[focusIndex + 1]; } else { this.waitForBeingActiveData = this.datas[0]; } this.pageData.Eventing.trigger('form.change'); } goToPreviousRow = () => { const lengths = this.datas.length - 1; const focusIndex = this.datas.findIndex(i => i === this.waitForBeingActiveData); if (focusIndex && focusIndex > 0) { this.waitForBeingActiveData = this.datas[focusIndex - 1]; } else { this.waitForBeingActiveData = this.datas[lengths]; } this.pageData.Eventing.trigger('form.change'); } goToNextFinancePeriod = () => { if (this.waitForBeingActiveData && this.waitForBeingActiveData.financialPeriods && this.waitForBeingActiveData.financialPeriods.length) { const lengths = this.waitForBeingActiveData.financialPeriods.length - 1; const focusIndex = this.waitForBeingActiveData.financialPeriods.findIndex(i => i === this.waitForBeingActiveFinancialPeriod); if (focusIndex > -1 && focusIndex + 1 <= lengths) { this.waitForBeingActiveFinancialPeriod = this.waitForBeingActiveData.financialPeriods[focusIndex + 1]; } else { this.waitForBeingActiveFinancialPeriod = this.waitForBeingActiveData.financialPeriods[0]; } this.pageData.Eventing.trigger('form.change'); } } goToPreviousPeriod = () => { if (this.waitForBeingActiveData && this.waitForBeingActiveData.financialPeriods && this.waitForBeingActiveData.financialPeriods.length) { const lengths = this.waitForBeingActiveData.financialPeriods.length - 1; const focusIndex = this.waitForBeingActiveData.financialPeriods.findIndex(i => i === this.waitForBeingActiveFinancialPeriod); if (focusIndex && focusIndex > 0) { this.waitForBeingActiveFinancialPeriod = this.waitForBeingActiveData.financialPeriods[focusIndex - 1]; } else { this.waitForBeingActiveFinancialPeriod = this.waitForBeingActiveData.financialPeriods[lengths]; } this.pageData.Eventing.trigger('form.change'); } } public initializeListenersInSelectMode?: boolean = undefined; public datas: Data[] = []; public activeData?: Data; public waitForBeingActiveData?: Data; public waitForBeingActiveFinancialPeriod?: FinancialPeriod; public activeFinancialPeriod?: FinancialPeriod; public pageData: BasePageData = new TabPageData(this.mainStateManager); public initializeStatusBar: boolean = false; constructor( public mainStateManager: MainStateManager ) { } deserialize = (json: IData[]) => { if (json && json.length) { let isAnyActive = false; this.datas = json.map((data, index) => { const newData = new Data(this.mainStateManager, data.id, data.isActive, data.name, data.caption, data.owner); newData.financialPeriods = FinancialPeriod.deserialize(data.financialPeriods); if (newData.isActive) { isAnyActive = true; this.activeData = newData; } if (!isAnyActive && index === json.length - 1) { newData.isActive = true; this.activeData = newData; } if (this.activeData) { this.activeFinancialPeriod = this.activeData.financialPeriods.find(financialPeriod => financialPeriod.isActive); } return newData; }); } } }