<apex:page id="page" controller="RentalReportExportController">
    <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}" />
    <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}" />
    <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}" />
    <apex:includeScript value="{!URLFOR($Resource.connection20)}"/>
    <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" />
    <head>
    </head>
    <style>
        .disabledbutton {
            pointer-events: none;
            opacity: 0.4;
        }
        .hideshow{
            visibility: hidden;
        }
    </style>
    <body>
        <script>
            // sforce.connection.sessionId = '{!GETSESSIONID()}'; 
            var awsList = [];
            var staticResources = JSON.parse('{!staticResource}');
            var fieldSize = '{!fieldSize}';

            function remove() {
                
            }

            function getPIPayload() {
                let awsList = [];
                let searchPayload = new Object();

                var fieldsInputList = '{!fieldInputList}';
                
                let dict = {};
                let namesField = document.getElementById("page:form:repeatBlock:repeat:0:chooseField");
                let optionsField = document.getElementById("page:form:repeatBlock:repeat:0:chooseOperation");
                let valuesField = document.getElementById("page:form:repeatBlock:repeat:0:inputText");
                if (namesField) {
                    dict['name'] = namesField.value;
                }
                if (optionsField) {
                    if (namesField.value == 'sfRecordId' && (optionsField.value == 'like' || optionsField.value == 'not like')) {
                        dict['operator'] = optionsField.value.replace('like', 'in');
                    } else {
                        dict['operator'] = optionsField.value;
                    }
                }
                if (valuesField && valuesField.value) {
                    if (namesField.value == 'sfRecordId') {
                        dict['value'] = valuesField.value.split('\n');
                    } else {
                        dict['value'] = valuesField.value;
                    }
                }
                console.log('size: ' + fieldSize);
                console.log(dict);
                awsList.push(dict);


                // for (let index = 0; index < fieldsInputList.length; index++) {
                //     let dict = {};
                //     let namesField = document.getElementById("page:form:repeatBlock:repeat:"+index+":chooseField");
                //     let optionsField = document.getElementById("page:form:repeatBlock:repeat:"+index+":chooseOperation");
                //     let valuesField = document.getElementById("page:form:repeatBlock:repeat:"+index+":inputText");
                //     if (namesField) {
                //         dict['name'] = namesField.value.toLowerCase();
                //     }
                //     if (optionsField) {
                //         dict['operator'] = optionsField.value;
                //     }
                //     if (valuesField) {
                //         dict['value'] = valuesField.value;
                //     }
                //     console.log(dict);
                // }
                return JSON.stringify(awsList);
            }

            function exportsAllData(){
                
                let requestAllSearchPayload = [];
                console.log('requestSearchPayload ' + requestAllSearchPayload);
                let queryBackContactName = function queryBackContactName(result){
                    console.log('result ' + result.length);
                    var blob = new Blob(["\ufeff", result]);
                    var link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blob);
                    // let csvContent = "data:text/csv;charset=utf-8,\ufeff" 
                    //     +result;
                    // let encodedUri = encodeURI(csvContent);
                    // let link = document.createElement("a");
                    // link.setAttribute("href", encodedUri);
                    link.setAttribute("download", "contactAll.csv");
                    document.body.appendChild(link); // Required for FF
                    unblockUI();

                    link.click(); // This will download the data file named "my_data.csv".
                };
                blockme();
                AWSService.search(staticResources.reportUrl,requestAllSearchPayload,queryBackContactName,staticResources.token);
            }

            function exportsData() {
                let requestSearchPayload = getPIPayload();
                if (JSON.parse(requestSearchPayload) && JSON.parse(requestSearchPayload)[0].value) {
                    console.log('requestSearchPayload ' + requestSearchPayload);
                    let queryBackContactName = function queryBackContactName(result){
                        console.log('result ' + result.length);
                        var blob = new Blob(["\ufeff", result]);
                        var link = document.createElement('a');
                        link.href = window.URL.createObjectURL(blob);
                        // let csvContent = "data:text/csv;charset=utf-8,\ufeff" 
                        //     +result;
                        // let encodedUri = encodeURI(csvContent);
                        // let link = document.createElement("a");
                        // link.setAttribute("href", encodedUri);
                        link.setAttribute("download", "rentalApply.csv");
                        document.body.appendChild(link); // Required for FF
                        unblockUI();

                        link.click(); // This will download the data file named "my_data.csv".
                    };
                    blockme();
                    AWSService.search(staticResources.reportUrl,requestSearchPayload,queryBackContactName,staticResources.token);
                } else {
                    alert("请先输入Salesforce ID值");
                }
            }
        </script>
        
        <apex:form id="form">
            报表对象：
            <br/>
            <apex:selectList id="chooseObject" value="{!selectedObject}" size="1">
                <apex:selectOptions value="{!objectOptions}"/>
            </apex:selectList>            
            <apex:pageBlock id="repeatBlock">
                <apex:repeat id="repeat" value="{!fieldInputList}" var="fieldInput">
                    <!-- <apex:selectOption value = "{!filedOptions}"/> -->
                    <apex:selectList id="chooseField" value="{!fieldInput.fieldAPI}" size="1">
                        <apex:selectOptions value="{!filedOptions}"/>
                    </apex:selectList> 
                    <!-- <apex:selectOption value = "{!operationSelectOptions}"/> -->
                    <apex:selectList id="chooseOperation" value="{!fieldInput.operation}" size="1">
                        <!-- <apex:selectOptions value="{!operationSelectOptions}"/> -->
                        <apex:selectOptions value="{!operationSelectOptions}"/>
                    </apex:selectList> 
                    <apex:inputTextarea id="inputText" value="{!fieldInput.value}" rows="20" cols="35" />
                    <!-- - &nbsp;&nbsp;+ -->
                    <br />
                </apex:repeat>
                <!-- <apex:commandButton id="addFilter" value="添加筛选器" action="{!addFilter}" reRender="repeatBlock" />
                <apex:commandButton id="removeFilter" value="删除筛选器" action="{!removeFilter}" reRender="repeatBlock" /> -->
            </apex:pageBlock>
            <input class="btn" type="Button" id="exportData" value="导出" onclick="exportsData()" />    
            <!-- <input class="btn" type="Button" id="exportData" value="导出全部数据" onclick="exportsAllData()" />   -->                           
        </apex:form>
    </body>
</apex:page>