module fb { export class DokumentOchUppladdadeWO extends fb.ResourceBase { Dokument: { Senaste: DokumentLO; GamlaVersioner: List; }[]; Produktblad: List; Objekt: List; Projekt: List; Foerening: List; private maeklarObjektId?: number; constructor(data: any, maeklarObjektId?: number) { super(data, false); this.maeklarObjektId = maeklarObjektId; } init(initData: any) { var self = this; if (initData.Dokument) { var dokumentGroups = _.groupBy(initData.Dokument, 'DokumentMallVersionId'); self.Dokument = _.map(dokumentGroups, function (dokumentGroup: DokumentLO[]) { var senasteDokument = _.max(dokumentGroup, function (dokument: DokumentLO) { return dokument.Version }); return { Senaste: new fb.DokumentLO(senasteDokument), GamlaVersioner: new fb.List(_.filter(dokumentGroup, function (dokument: DokumentLO) { return dokument.Version != senasteDokument.Version }), fb.DokumentLO) }; }); } if (initData.Produktblad) { self.Produktblad = new fb.List(initData.Produktblad, fb.FilLO); } if (initData.Objekt) { self.Objekt = new fb.List(initData.Objekt, fb.Fil); // Hittar det senaste LM-utdraget (Senast uppladdade filen av typ LMUTDRAG_FAST_TOMT) och sätter AerSenasteLMUtdrag = true på denna FilLO let senaste: any; _.forEach(self.Objekt, function (value: any) { if (self.maeklarObjektId) { value.MaeklarObjektId = new ChangeTrack(self.maeklarObjektId, self); } if (value.FilTyp.value === fb.FasITDomain.FilTyp.LMUTDRAG_FAST_TOMT) { if (!senaste || senaste.UppladdatDatum.value < value.UppladdatDatum.value) { senaste = value; } } }); if (senaste) { senaste.AerSenasteLMUtdrag = true; } } if (initData.Projekt) { self.Projekt = new fb.List(initData.Projekt, fb.FilLO); } if (initData.Foerening) { self.Foerening = new fb.List(initData.Foerening, fb.FilLO); } } } }