function [FIG,FIG_ENG] = report_CT(c1trigger,c6trigger,alarms,nCT,rpt,Font_caption,... Font_table,Font_section,datarif,CT,CT_ENG,FIG,FIG_ENG,activeEN,conn,FileName) fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'report_CT function started'; fprintf(fileID,fmt,text); import mlreportgen.dom.* import mlreportgen.report.* % Make sure DOM is compilable makeDOMCompilable() CT_Att = zeros(1,nCT); att = cell(1,nCT); for A = 1:nCT array = char(alarms(A,2)); comando = ['select EventDate, EventTime, XShift, X from ELABDATACTRL where EventDate > ''' ... datestr(datenum(datarif),'yyyy-mm-dd') ''' and CtrlToolName = ''' ... array ''' ']; curs = exec(conn,comando); curs = fetch(curs); Dati = curs.Data; CTS = Section(); app = Heading2(array); app.Style = {OuterMargin('0in','0in','0.2in','0.2in'),FontSize(Font_section),HAlign('justify')}; % Sx-Dx-Alto-Basso CTS.Title = app; if activeEN == 1 CTS_ENG = Section(); appENG = Heading2(array); appENG.Style = {OuterMargin('0in','0in','0.2in','0.2in'),FontSize(Font_section),HAlign('justify')}; % Sx-Dx-Alto-Basso CTS_ENG.Title = appENG; end % Modifico il formato di data e ora [rD,rC] = size(Dati); if rC ~= 1 % Camera if cell2mat(alarms(A,3)) == 4 ftpobj = ftp('160.78.30.106','asega','mums'); % connessione FTP percorso = ['/ctrlToolsImages/' array]; cd(ftpobj, percorso); % vado alla cartella con le immagini della camera elaborata cartella = dir(ftpobj); % elenco file nella cartella infoPIC = struct2cell(cartella(end)); % estraggo info ultima foto mget(ftpobj, infoPIC(1)); % scarico foto close(ftpobj) IMGCam = Image(char(infoPIC(1))); IMGCam.Style = [IMGCam.Style {ScaleToFit}]; IMGCam_cap = Paragraph(['Fig. ' num2str(FIG) ' - Immagine acquisita dalla '... 'videocamera ASECam ' array ' presente in sito']); FIG = FIG+1; IMGCam_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; timePIC = cell2mat(infoPIC(5)); % % check ora legale % if isdst(datetime(infoPIC(4),'Timezone','Europe/Zurich')) == 1 % timePIC = cell2mat(infoPIC(5))-(1/24); % end testoC = Paragraph(['Di seguito viene riportata l''ultima immagine acquisita in data '... datestr(timePIC,'dd/mm/yyyy') ' dalla videocamera ASECam ' array '.']); testoC.HAlign = 'justify'; add(CTS,testoC); add(CTS,IMGCam); add(CTS,IMGCam_cap); % -- ENG -- if activeEN == 1 IMGCam_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Image acquired by the '... 'ASECam video camera ' array ' installed on site']); FIG_ENG = FIG_ENG+1; IMGCam_ENG_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; testoC_ENG = Paragraph(['The following figure displays the last image acquired by ASECam '... array ' installe on site, referring to the following date:' datestr(cell2mat(infoPIC(5)),'dd/mm/yyyy HH:MM:SS') '.']); testoC_ENG.HAlign = 'justify'; add(CTS_ENG,testoC_ENG); add(CTS_ENG,IMGCam); add(CTS_ENG,IMGCam_ENG_cap); end else T = [cell2mat(Dati(:,1)) repmat(' ', [rD,1]) cell2mat(Dati(:,2))]; Date = datenum(T); % Data Att_Loc = cell2mat(Dati(:,3)); % Attivazioni Locali Att_Cum = cell2mat(Dati(:,4)); % Attivazioni Cumulate Att_Loc_Tot = cumsum(Att_Loc); testo = Paragraph(['Durante il periodo temporale di riferimento, '... 'sono state registrate ' num2str(Att_Loc_Tot(end)) ' attivazioni del dispositivo.' ]); testo2 = Paragraph(['Il numero di attivazioni totali dalla data di inizio monitoraggio ' char(232) ' pari '... 'a ' num2str(Att_Cum(end)) '.' ]); if Att_Loc_Tot(end) > 1 CT_Att(1,A) = A; end testo.HAlign = 'justify'; testo2.HAlign = 'justify'; att_temp = find(Att_Loc); if isempty(att_temp) == 0 att{1,A} = splitlines(strjoin(cellstr(Date(att_temp)), '\n')); end add(CTS,testo); add(CTS,testo2); %--- ENG --- if activeEN == 1 testo = Paragraph(['During the reference time period, '... 'the Control Tool recorded a total of ' num2str(Att_Loc_Tot(end)) ' activations.' ]); testo2 = Paragraph(['The total number of activations since the beginning of the monitoring '... 'activity amounts to ' num2str(Att_Cum(end)) '.' ]); if Att_Loc_Tot(end) > 1 CT_Att(1,A) = A; end testo.HAlign = 'justify'; testo2.HAlign = 'justify'; add(CTS_ENG,testo); add(CTS_ENG,testo2); att_temp = find(Att_Loc); if isempty(att_temp) == 0 att{1,A} = splitlines(strjoin(cellstr(Date(att_temp)), '\n')); end end end % elseif else testo = Paragraph('Non sono presenti dati relativi al periodo temporale considerato.'); add(CTS,testo); if activeEN == 1 testo = Paragraph('No data available for the reference time period.'); add(CTS,testo); end end br = PageBreak(); add(CTS,br); add(CT,CTS); end clear A A = find(CT_Att); % Cerco eventuali attivazioni nei singoli dispositivi CT if isempty(A) == 0 colonna1(1,1) = {'ID'}; colonna2(1,1) = {'Tipologia di dispositivo'}; colonna3(1,1) = {'Attivazioni [gg-mm-aaaa OO:MM:SS]'}; disp = c1trigger(A); type = c6trigger(A); [num,~] = size(disp); for n = 1:num colonna1(n+1,1) = {disp}; colonna2(n+1,1) = {type}; colonna3(n+1,1) = {att}; end tab = FormalTable([colonna1,colonna2,colonna3]); % formattazione tabella tab.TableEntriesStyle = {HAlign('center'),VAlign('middle'),FontSize(Font_table),InnerMargin('0.5mm')}; tab.Style = {ResizeToFitContents(true),Width("100%"),RowSep('solid','black','1px'),... ColSep('solid','black','1px'),Hyphenation(false),BackgroundColor('#E0F1FF')}; tab.Border = 'single'; tabCaption = Paragraph('Tab. 2 - Tipologia di control tools e relative attivazioni durante il periodo analizzato'); tabCaption.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; bodyFirstRow = tab.Body.Children(1); bodyFirstRow.Style = [bodyFirstRow.Style {Bold()}]; add(CT,tabCaption); add(CT,tab); % --- ENG --- if activeEN == 1 colonna1_ENG(1,1) = {'ID'}; colonna2_ENG(1,1) = {'Control Tool typology'}; colonna3_ENG(1,1) = {'Activation [dd-mm-yyyy HH:MM:SS]'}; disp = c1trigger(A); type = c6trigger(A); [num,~] = size(disp); for n = 1:num colonna1_ENG(n+1,1) = {disp}; colonna2_ENG(n+1,1) = {type}; colonna3_ENG(n+1,1) = {att}; end tab_ENG = FormalTable([colonna1_ENG,colonna2_ENG,colonna3_ENG]); % formattazione tabella tab_ENG.TableEntriesStyle = {HAlign('center'),VAlign('middle'),FontSize(Font_table),InnerMargin('0.5mm')}; tab_ENG.Style = {ResizeToFitContents(true),Width("100%"),RowSep('solid','black','1px'),... ColSep('solid','black','1px'),Hyphenation(false),BackgroundColor('#E0F1FF')}; tab_ENG.Border = 'single'; tabCaption_ENG = Paragraph('Tab. 2 - Control Tools typology and relative activations recorded during the reference time period'); tabCaption_ENG.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; bodyFirstRow = tab_ENG.Body.Children(1); bodyFirstRow.Style = [bodyFirstRow.Style {Bold()}]; add(CT_ENG,tabCaption_ENG); add(CT_ENG,tab_ENG); end end add(rpt,CT); template(rpt); text = 'report_CT function executed correctly'; fprintf(fileID,fmt,text); fclose(fileID); end