armisa-models
Version:
models of armisa!
133 lines (117 loc) • 5.61 kB
text/typescript
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;
});
}
}
}