/// declare var sfRedNaoCreateFormElementByName:any; var SmartFormsElementsTranslation:any={}; class SmartFormsEntries { public Grid:any; public formElementsOptions:any; public formElements:any; public entries:any; public currentEntryBeingEditted:number; public fakeFileUploader:any; constructor() { rnJQuery('#cbDisplayType').change(()=> { this.FormatStartDate(); this.FormatEndDate(); }); rnJQuery(".datePicker").datepicker({ changeMonth: true, changeYear: true, dateFormat: 'MM/dd/yy', onClose: (dateText, inst)=> { var id = rnJQuery(this).attr('id'); if (id == 'dpStartDate') this.FormatStartDate(); else this.FormatEndDate(); } }); rnJQuery('#ui-datepicker-div').wrap('
'); rnJQuery('#btnExecute').click(()=>{this.ExecuteQuery()}); } public FormatStartDate(): any { var dp = rnJQuery('#dpStartDate'); var date = dp.datepicker('getDate'); if (date == null) return; switch (rnJQuery('#cbDisplayType').val()) { case 'd': return; case 'w': dp.datepicker('setDate', new Date(date.setDate(date.getDate() - date.getDay()))); break; case 'm': dp.datepicker('setDate', new Date(date.getFullYear(), date.getMonth(), 1)); break; case 'y': dp.datepicker('setDate', new Date(date.getFullYear(), 0, 1)); break; } } public FormatEndDate() { var dp = rnJQuery('#dpEndDate'); var date = dp.datepicker('getDate'); if (date == null) return; switch (rnJQuery('#cbDisplayType').val()) { case 'd': return; case 'w': dp.datepicker('setDate', new Date(date.setDate(date.getDate() + (6 - date.getDay())))); break; case 'm': date = new Date(date.getFullYear(), date.getMonth() + 1, 1); dp.datepicker('setDate', new Date(date.setDate(0))); break; case 'y': dp.datepicker('setDate', new Date(date.getFullYear(), 11, 31)); break; } } public ExecuteQuery() { var startDate = rnJQuery.datepicker.formatDate('yy-mm-dd', rnJQuery('#dpStartDate').datepicker('getDate')); var endDate = rnJQuery.datepicker.formatDate('yy-mm-dd', rnJQuery('#dpEndDate').datepicker('getDate')); var form = rnJQuery('#cbForm').val(); if (!startDate) { alert('Start Date is Mandatory'); return; } if (!endDate) { alert('End Date is Mandatory'); return; } if (!form) { alert('Campaign is mandatory'); return; } var data = { action: "rednao_smart_forms_entries_list", startDate: startDate, endDate: endDate, form_id: form }; rnJQuery.post(ajaxurl, data, (result:any)=> { var result = rnJQuery.parseJSON(result); this.ajaxCompleted(result) }); } public ajaxCompleted(result) { this.formElementsOptions= result.formOptions; this.entries=result.entries; Promise.all([ rnSystem.import('sfMain/formBuilder/sfAnalytics'), rnSystem.import('sfMain/formBuilder/fakeFileUploader') ] ).then((modules)=> { this.fakeFileUploader=modules[1].fakeFileUploader; this.LoadGrid(modules[0], this.formElementsOptions, this.entries); }); } public createActionButtons(colData:any,entryData:any){ return `
`; } public LoadGrid(columnCreator, formOptions, entries) { var colmodel = []; colmodel.push({ name: 'Actions', index: 'entry_id', width: 20, height: 120, editable: false, formatter: ((param1:any,colData:any,entryData:any)=>{ return this.createActionButtons(colData,entryData); }) }); colmodel.push({ "name": "date", "index": "date", "sorttype": "string", "key": false, "editable": true, hidden: false, width: 100 }); var i; for (i = 0; i < formOptions.length; i++) { var column = columnCreator.CreateColumn(formOptions[i]); if (column != null) { for (var t = 0; t < column.length; t++) colmodel.push(column[t]); } } var max = 500; if (entries.length > 500) max = entries.length; colmodel.push({ "name": "entry_id", "index": "entry_id", "sorttype": "int", "key": true, "editable": false, hidden: true }); if (this.Grid != null) rnJQuery('#grid').jqGrid('GridUnload'); this.Grid = rnJQuery('#grid').jqGrid({ autowidth: false, "hoverrows": true, height: '100%', multiselect:true, mtype: "POST", "viewrecords": true, "jsonReader": {"repeatitems": false, "subgrid": {"repeatitems": false}}, "gridview": true, "editurl": ajaxurl + "?action=rednao_smart_forms_execute_op", "cellurl": ajaxurl + "?action=rednao_smart_donations_execute_analytics_op", "rowList": [50, 150, 300, max], "rowNum":50, "sortname": "TransactionId", "colModel": colmodel, "datatype": "local", "data": entries, "postData": {"oper": "grid"}, "prmNames": { "page": "page", "rows": "rows", "sort": "sidx", "order": "sord", "search": "_search", "nd": "nd", "id": "TransactionId", "filter": "filters", "searchField": "searchField", "searchOper": "searchOper", "searchString": "searchString", "oper": "oper", "query": "grid", "addoper": "add", "editoper": "edit", "deloper": "del", "excel": "excel", "subgrid": "subgrid", "totalrows": "totalrows", "autocomplete": "autocmpl" } , "loadError": function (xhr, status, err) { try { if (xhr.responseText) alert(xhr.responseText); } catch (e) { alert(xhr.responseText); } }, "pager": "#pager" }); rnJQuery('#grid').jqGrid('navGrid', '#pager', { "add": false, "edit": false, "del": false, "search": false, "refresh": false, "view": false, "excel": false, "pdf": false, "csv": true, addtext: "", addtitle: "Add new row", "errorTextFormat": function (r) { return r.responseText; } }, { beforeSubmit: function () { alert('eaea') } }, { beforeSubmit: function () { alert('eaea1') } }, { beforeSubmit: function () { if (!RedNaoLicensingManagerVar.LicenseIsValid("Sorry, you need a license to delete a record")) { return [false, 'A license is required']; } { return [true]; } }, afterSubmit: function (response, postData) { try { var result:any = JSON.parse(response.responseText); if (result.success == "0") return [false, result.message]; } catch (exception) { return [false, "An error occurred, please refresh and try again"]; } return [true]; } } ); rnJQuery("#grid").jqGrid('navButtonAdd', '#pager', { caption: "", buttonicon:'ui-icon-trash', onClickButton: function () { let selectedRows=rnJQuery("#grid").getGridParam('selarrrow'); if(selectedRows==null||selectedRows.length==0) return; selectedRows=selectedRows.slice(0); rnJQuery.RNGetConfirmationDialog().ShowConfirmation('Are you sure you want to delete the row?',(selectedRows.length).toString()+ ' Rows are going to be deleted. This is not reversible', function() { rnJQuery.ajax({ type: 'POST', url: ajaxurl, dataType: "json", data: { action: "rednao_smart_forms_execute_op", entriesToDelete: JSON.stringify(selectedRows), oper: 'massDelete' }, success: (result)=> { for(let rowId of selectedRows) { rnJQuery('#grid').jqGrid('delRowData',rowId); } alert('Entry(es) deleted successfully'); } }); }); } }); rnJQuery("#grid").jqGrid('navButtonAdd', '#pager', { caption: "Export to csv (pro)", onClickButton: function () { if (!RedNaoLicensingManagerVar.LicenseIsValid('Sorry, exporting to csv is only supported in the pro version')) { return; } var startDate = rnJQuery.datepicker.formatDate('yy-mm-dd', rnJQuery('#dpStartDate').datepicker('getDate')); var endDate = rnJQuery.datepicker.formatDate('yy-mm-dd', rnJQuery('#dpEndDate').datepicker('getDate')); var form = rnJQuery('#cbForm').val(); //window.location=smartFormsRootPath+"smart-forms-exporter.php?startdate="+startDate+"&enddate="+endDate+"&formid="+form; var totalOfRecords = rnJQuery("#grid").jqGrid('getGridParam', 'records'); if (totalOfRecords > 1000000) alert('Warning the export funcion can export up to 1,0000,000 records. Please export the data directly though the database'); var rowNum = rnJQuery('#grid').getGridParam('rowNum'); // rnJQuery('#grid').setGridParam({rowNum: 1000000}).trigger("reloadGrid"); var data:any = {}; data.headers = {}; let colmodels=rnJQuery('#grid').jqGrid('getGridParam', 'colModel'); for (var i = 0; i < colmodels.length; i++) { if (typeof colmodels[i].label == 'undefined') continue; data.headers[colmodels[i].index] = colmodels[i].label; } data.rowsInfo = rnJQuery("#grid").jqGrid('getRowData'); for (var i = 0; i < data.rowsInfo.length; i++) { delete data.rowsInfo[i].Actions; } var data:any = JSON.stringify(data); rnJQuery('#smartFormsExportData').val(data); rnJQuery('#exporterForm').submit(); //rnJQuery('#grid').setGridParam({rowNum: rowNum}).trigger("reloadGrid"); } }); this.Grid.on('jqGridAddEditAfterSubmit', function (a, b, c) { }); } editForm(formId: number,rowId:string) { this.updateEditContainer(formId); var $dialog=rnJQuery('#editDialog').RNDialog({ ButtonClick:(action,button)=>{ if(action=='accept') { this.SaveEdition(rowId); } }, Width:'750px', Buttons:[ {Label:'Cancel',Id:'dialogCancel',Style:'danger',Icon:'glyphicon glyphicon-remove',Action:'cancel'}, {Label:'Submit',Id:'dialogAccept',Style:'success',Icon:'glyphicon glyphicon-ok',Action:'accept'} ] }); $dialog.parent().addClass('exptop'); $dialog.find('modal-footer').css('clear','both').css('border','none'); $dialog.find('.modal-content').css('max-height',rnJQuery(window).height()*0.7); $dialog.off('shown.bs.modal').on('shown.bs.modal',()=>{ for(let formField of this.formElements) if(formField.Options.ClassName=='rednaosignature') formField.ExecuteResize(); }); $dialog.RNDialog('Show'); } deleteForm(formId: string,rowId:string) { rnJQuery.RNGetConfirmationDialog().ShowConfirmation('Are you sure you want to delete the row?','This is not reversible', function() { rnJQuery.ajax({ type: 'POST', url: ajaxurl, dataType: "json", data: { action: "rednao_smart_forms_execute_op", TransactionId: formId, oper: 'del' }, success: (result)=> { alert('Entry deleted successfully'); rnJQuery('#grid').jqGrid('delRowData',rowId); } }); }); } private updateEditContainer(formId: number) { SmartFormsModules.ContainerManager.ClearContainer(formId); SmartFormsModules.ContainerManager.ClearContainer(0); var entry=null; this.currentEntryBeingEditted=formId; for(var i=0;i{ if(result.result) { var currentEntry=null; for(var entry of this.entries) { if(entry.entry_id==this.currentEntryBeingEditted) currentEntry=entry; } currentEntry.data=formValues; /* var colModels=rnJQuery("#grid").jqGrid ('getGridParam', 'colModel'); var rowData=rnJQuery('#grid').jqGrid('getRowData', rowId); for(var formValue in formValues) { var currentColModel=null; for(var colmodel of colModels) { if(colmodel.index==formValue) currentColModel=colmodel; } rowData[formValue] = currentColModel.formatter('',{colModel:currentColModel},currentEntry); }*/ var rowData=rnJQuery('#grid').jqGrid('getRowData', rowId); rowData.data=currentEntry.data; rnJQuery('#grid').jqGrid('setRowData', rowId,rowData); rnJQuery('#editDialog').RNDialog('Hide'); } else alert('an error occurred, please try again'); }, error:function(result) { alert('An error ocurred'); } }); } } var SmartFormsEntriesVar:SmartFormsEntries; rnJQuery(function () { SmartFormsEntriesVar=new SmartFormsEntries(); }); function smartFormsEditClicked(event:any) { event.preventDefault(); event.stopImmediatePropagation(); if(!RedNaoLicensingManagerVar.LicenseIsValid("Sorry, you need a license to delete or edit a record")) { return [false,'Sorry, A license is required']; } var formId:number=rnJQuery(event.currentTarget).parent().data('entryid'); var rowId=rnJQuery(event.currentTarget).closest('.jqgrow').attr('id'); SmartFormsEntriesVar.editForm(formId,rowId); } function smartFormsDeleteClicked(event:any) { event.preventDefault(); event.stopImmediatePropagation(); var formId:string=rnJQuery(event.currentTarget).parent().data('entryid'); var rowId=rnJQuery(event.currentTarget).closest('.jqgrow').attr('id'); SmartFormsEntriesVar.deleteForm(formId,rowId); }