Commit b9a24e64 authored by Stéphane Bouvry's avatar Stéphane Bouvry
Browse files

Choix du format pour les exports des activités dans la liste des activités

parent 76f428d2
Loading
Loading
Loading
Loading
+32 −4
Original line number Diff line number Diff line
@@ -415,6 +415,9 @@ class ProjectGrantController extends AbstractOscarController

        $perimeter = $this->params()->fromQuery('perimeter', '');
        $fields = $this->params()->fromPost('fields', null);
        $format = $this->params()->fromPost('format', 'csv');




        $qb = $this->getEntityManager()->createQueryBuilder()->select('a')
@@ -589,11 +592,36 @@ class ProjectGrantController extends AbstractOscarController
            }
        }
        fclose($handler);
        header('Content-Disposition: attachment; filename=oscar-export.csv');
        header('Content-Length: ' . filesize('/tmp/' . $csv));
        header('Content-type: text/csv');

        die(file_get_contents('/tmp/' . $csv));

        $csvPath = sprintf('/tmp/%s', $csv);
        $xlsPath = sprintf('/tmp/%s.xls', $csv);
        $extension = 'csv';
        $mime = 'text/csv';

        $filePath = $csvPath;

        if( $format == "xls" ){
            $reader = \PHPExcel_IOFactory::createReader('CSV');
            $csvDatas = $reader->load($csvPath);
            $writer = \PHPExcel_IOFactory::createWriter($csvDatas, 'Excel5');
            $writer->save($xlsPath);

            $filePath = $xlsPath;
            $extension = 'xls';
            $mime = 'application/vnd.ms-excel';
        }

        header('Content-Disposition: attachment; filename=oscar-export.' . $extension);
        header('Content-Length: ' . filesize($filePath));
        header('Content-type: '.$mime);

        echo file_get_contents($filePath);

        // Purge des fichiers temporaires
        @unlink($csvPath);
        if( $extension == 'xls' ) @unlink($filePath);
        die();
    }

    /**
+3 −3
Original line number Diff line number Diff line
@@ -450,10 +450,10 @@

                });
            </script>

            <hr>
            <form action="<?= $this->url('contract/csvpayments') . $perimeter ?>" class=" export-all-area" method="post">
                <input type="hidden" name="ids" value="<?= $exportIds ?>">
                <button type="submit" href="#" class="btn btn-default">
                <button type="submit" href="#" class="btn btn-default btn-xs">
                    <i class="icon-bank"></i>
                    Exporter les versements
                </button>
@@ -461,7 +461,7 @@

            <form action="<?= $this->url('contract/exportjson') ?>" class=" export-selection-area" method="post">
                <input type="hidden" name="ids" value="<?= $exportIds ?>">
                <button type="submit" href="#" class="btn btn-primary">
                <button type="submit" href="#" class="btn btn-primary btn-xs">
                    <i class="icon-cube"></i>
                    Export JSON
                </button>
+1 −1
Original line number Diff line number Diff line
(function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.activitiesexport=t():e.activitiesexport=t()})("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(s[n])return s[n].exports;var i=s[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var s={};return t.m=e,t.c=s,t.d=function(e,s,n){t.o(e,s)||Object.defineProperty(e,s,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=1)}([function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={props:{ids:{default:[]},fields:{default:[]},urlPost:{required:!0}},data:function(){return{selectedFields:[],showConfiguration:!1,switchSelect:!0}},computed:{fieldsUI:function(){var e=this,t=[];for(var s in this.fields)this.fields.hasOwnProperty(s)&&(t[s]=[],this.fields[s].forEach(function(n){t[s].push({label:n,selected:e.selectedFields.indexOf(n)>-1})}));return t}},methods:{selectAll:function(){var e=[];if(!0===this.switchSelect)for(var t in this.fields)this.fields.hasOwnProperty(t)&&this.fields[t].forEach(function(t){e.push(t)});this.switchSelect=!this.switchSelect,this.selectedFields=e},toggleField:function(e){console.log("toggle",e),this.selectedFields.indexOf(e)>-1?this.selectedFields.splice(this.selectedFields.indexOf(e),1):this.selectedFields.push(e)}},created:function(){window.localStorage&&window.localStorage.getItem("export_fields")?this.selectedFields=JSON.parse(window.localStorage.getItem("export_fields")):this.selectedFields=[]},watch:{selectedFields:function(e){window.localStorage&&window.localStorage.setItem("export_fields",JSON.stringify(this.selectedFields))}}}},function(e,t,s){e.exports=s(2)},function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(0),i=s.n(n);for(var o in n)"default"!==o&&function(e){s.d(t,e,function(){return n[e]})}(o);var l=s(4),c=s(3),r=c(i.a,l.a,!1,null,null,null);t.default=r.exports},function(e,t){e.exports=function(e,t,s,n,i,o){var l,c=e=e||{},r=typeof e.default;"object"!==r&&"function"!==r||(l=e,c=e.default);var a="function"==typeof c?c.options:c;t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns,a._compiled=!0),s&&(a.functional=!0),i&&(a._scopeId=i);var d;if(o?(d=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},a._ssrRegister=d):n&&(d=n),d){var u=a.functional,f=u?a.render:a.beforeCreate;u?(a._injectStyles=d,a.render=function(e,t){return d.call(t),f(e,t)}):a.beforeCreate=f?[].concat(f,d):[d]}return{esModule:l,exports:c,options:a}}},function(e,t,s){"use strict";var n=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("form",{attrs:{action:e.urlPost,method:"POST"}},[s("input",{attrs:{type:"hidden",name:"ids"},domProps:{value:e.ids}}),e._v(" "),s("div",{staticClass:"btn-group"},[e._m(0),e._v(" "),s("button",{staticClass:"btn btn-xs btn-default",attrs:{type:"button"},on:{click:function(t){e.showConfiguration=!e.showConfiguration}}},[s("i",{staticClass:"icon-cog"}),e._v("Configurer")])]),e._v(" "),s("section",{directives:[{name:"show",rawName:"v-show",value:e.showConfiguration,expression:"showConfiguration"}],staticClass:"vue-loader text-small export-config"},[s("div",{staticClass:"content-loader"},[s("h2",[e._v("Champs à exporter")]),e._v(" "),s("input",{attrs:{type:"hidden",name:"fields"},domProps:{value:e.selectedFields}}),e._v(" "),s("hr"),e._v(" "),e._m(1),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.core,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),e._m(2),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.organizations,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),e._m(3),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.persons,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),e._m(4),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.milestones,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),s("hr"),e._v(" "),s("nav",[s("a",{staticClass:"btn btn-default",on:{click:function(t){e.selectAll()}}},[e.switchSelect?s("small",[e._v("Sélectionner tous les champs")]):s("small",[e._v("Déselectionner tous les champs")])]),e._v(" "),s("button",{staticClass:"btn btn-default",attrs:{type:"button"},on:{click:function(t){e.showConfiguration=!1}}},[e._v("Fermer")]),e._v(" "),s("button",{staticClass:"btn btn-primary",attrs:{type:"submit"},on:{click:function(t){e.showConfiguration=!1}}},[e._v("Exporter")])])])])])},i=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("button",{staticClass:"btn btn-xs btn-default",attrs:{type:"submit"}},[s("i",{staticClass:"icon-download-outline"}),e._v("Télécharger le CSV")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-cube"}),e._v("Champs de base")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-building-filled"}),e._v("Organisations")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-user"}),e._v("Membres")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-calendar"}),e._v("Jalons")])}],o={render:n,staticRenderFns:i};t.a=o}])});
(function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.activitiesexport=t():e.activitiesexport=t()})("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(s[n])return s[n].exports;var i=s[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var s={};return t.m=e,t.c=s,t.d=function(e,s,n){t.o(e,s)||Object.defineProperty(e,s,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=1)}([function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={props:{ids:{default:[]},fields:{default:[]},urlPost:{required:!0}},data:function(){return{selectedFields:[],showConfiguration:!1,switchSelect:!0}},computed:{fieldsUI:function(){var e=this,t=[];for(var s in this.fields)this.fields.hasOwnProperty(s)&&(t[s]=[],this.fields[s].forEach(function(n){t[s].push({label:n,selected:e.selectedFields.indexOf(n)>-1})}));return t}},methods:{selectAll:function(){var e=[];if(!0===this.switchSelect)for(var t in this.fields)this.fields.hasOwnProperty(t)&&this.fields[t].forEach(function(t){e.push(t)});this.switchSelect=!this.switchSelect,this.selectedFields=e},toggleField:function(e){console.log("toggle",e),this.selectedFields.indexOf(e)>-1?this.selectedFields.splice(this.selectedFields.indexOf(e),1):this.selectedFields.push(e)}},created:function(){window.localStorage&&window.localStorage.getItem("export_fields")?this.selectedFields=JSON.parse(window.localStorage.getItem("export_fields")):this.selectedFields=[]},watch:{selectedFields:function(e){window.localStorage&&window.localStorage.setItem("export_fields",JSON.stringify(this.selectedFields))}}}},function(e,t,s){e.exports=s(2)},function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(0),i=s.n(n);for(var o in n)"default"!==o&&function(e){s.d(t,e,function(){return n[e]})}(o);var l=s(4),c=s(3),r=c(i.a,l.a,!1,null,null,null);t.default=r.exports},function(e,t){e.exports=function(e,t,s,n,i,o){var l,c=e=e||{},r=typeof e.default;"object"!==r&&"function"!==r||(l=e,c=e.default);var a="function"==typeof c?c.options:c;t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns,a._compiled=!0),s&&(a.functional=!0),i&&(a._scopeId=i);var d;if(o?(d=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},a._ssrRegister=d):n&&(d=n),d){var u=a.functional,f=u?a.render:a.beforeCreate;u?(a._injectStyles=d,a.render=function(e,t){return d.call(t),f(e,t)}):a.beforeCreate=f?[].concat(f,d):[d]}return{esModule:l,exports:c,options:a}}},function(e,t,s){"use strict";var n=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("form",{attrs:{action:e.urlPost,method:"POST"}},[s("input",{attrs:{type:"hidden",name:"ids"},domProps:{value:e.ids}}),e._v(" "),s("div",{staticClass:"btn-group"},[e._m(0),e._v(" "),e._m(1),e._v(" "),s("button",{staticClass:"btn btn-xs btn-default",attrs:{type:"button"},on:{click:function(t){e.showConfiguration=!e.showConfiguration}}},[s("i",{staticClass:"icon-cog"}),e._v("Configurer")])]),e._v(" "),s("section",{directives:[{name:"show",rawName:"v-show",value:e.showConfiguration,expression:"showConfiguration"}],staticClass:"vue-loader text-small export-config"},[s("div",{staticClass:"content-loader"},[s("h2",[e._v("Champs à exporter")]),e._v(" "),s("input",{attrs:{type:"hidden",name:"fields"},domProps:{value:e.selectedFields}}),e._v(" "),s("hr"),e._v(" "),e._m(2),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.core,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),e._m(3),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.organizations,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),e._m(4),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.persons,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),e._m(5),e._v(" "),s("div",{staticClass:"cols"},e._l(e.fieldsUI.milestones,function(t,n){return s("label",{staticClass:"col3"},[s("input",{attrs:{type:"checkbox"},domProps:{checked:t.selected},on:{click:function(s){e.toggleField(t.label)}}}),e._v("\n                    "+e._s(t.label)+"\n                ")])})),e._v(" "),s("hr"),e._v(" "),s("nav",[s("a",{staticClass:"btn btn-default",on:{click:function(t){e.selectAll()}}},[e.switchSelect?s("small",[e._v("Sélectionner tous les champs")]):s("small",[e._v("Déselectionner tous les champs")])]),e._v(" "),s("button",{staticClass:"btn btn-default",attrs:{type:"button"},on:{click:function(t){e.showConfiguration=!1}}},[e._v("Fermer")]),e._v(" "),s("button",{staticClass:"btn btn-primary",attrs:{type:"submit"},on:{click:function(t){e.showConfiguration=!1}}},[e._v("Exporter")])])])])])},i=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("select",{staticClass:"form-control xs",attrs:{name:"format"}},[s("option",{attrs:{value:"xls",selected:""}},[e._v("XLS (Excel)")]),e._v(" "),s("option",{attrs:{value:"csv"}},[e._v("CSV (Commat Separated Value)")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("button",{staticClass:"btn btn-xs btn-default",attrs:{type:"submit"}},[s("i",{staticClass:"icon-download-outline"}),e._v("Télécharger")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-cube"}),e._v("Champs de base")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-building-filled"}),e._v("Organisations")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-user"}),e._v("Membres")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("h3",[s("i",{staticClass:"icon-calendar"}),e._v("Jalons")])}],o={render:n,staticRenderFns:i};t.a=o}])});
//# sourceMappingURL=ActivitiesExport.js.map
 No newline at end of file
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+5 −1
Original line number Diff line number Diff line
@@ -2,7 +2,11 @@
    <form :action="urlPost" method="POST">
        <input type="hidden" name="ids" :value="ids" />
        <div class="btn-group">
            <button type="submit" class="btn btn-xs btn-default"> <i class="icon-download-outline"></i>Télécharger le CSV</button>
            <select name="format" class="form-control xs">
                <option value="xls" selected>XLS (Excel)</option>
                <option value="csv">CSV (Commat Separated Value)</option>
            </select>
            <button type="submit" class="btn btn-xs btn-default"> <i class="icon-download-outline"></i>Télécharger</button>
            <button type="button" class="btn btn-xs btn-default" @click="showConfiguration = !showConfiguration"> <i class="icon-cog"></i>Configurer</button>
        </div>
        <section v-show="showConfiguration" class="vue-loader text-small export-config">