Loading module/Oscar/src/Oscar/Service/ProjectGrantService.php +51 −33 Original line number Diff line number Diff line Loading @@ -2332,6 +2332,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi $error = ""; switch ($type) { ///////////////////////////////////////////// ANNEE d'ACTIVITE case 'da': $key = $type; $min = "$value1-01-01"; Loading @@ -2341,8 +2342,9 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } $filterES['da'][] = ['range' => [ 'dateStart' => ['lte' => $max] ]]; $filterES['da'][] = ['range' => [ 'dateEnd' => ['gte' => $min] ]]; break; ///////////////////////////////////////////// LES DATES case 'adc': case 'adf': case 'ads': Loading Loading @@ -2375,6 +2377,8 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// STATUS case 'as': if( !$value1 ){ $error = "Aucun status selectionné"; Loading @@ -2399,6 +2403,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi break; ///////////////////////////////////////////// TYPES case 'at': if (!array_key_exists('at', $filterES)) { $filterES['at'] = [ Loading @@ -2416,6 +2421,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// PERSONNES case 'ap': if (!array_key_exists('ap', $filterES)) { $filterES['ap'] = []; Loading Loading @@ -2470,6 +2476,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// ORGANISATION case 'ao': if (!array_key_exists('ao', $filterES)) { $filterES['ao'] = []; Loading Loading @@ -2524,52 +2531,63 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// JALONS case 'ml': if (!array_key_exists('ml', $filterES)) { $filterES['ml'] = []; } if ($value1) { $criteria = false; $currentFilter = [ "nested" => [ "path" => "jalons", "query" => [ "bool" => [ "filter" => [ ["term" => ["jalons.type_id" => $value1]] ] ] ] ] ]; if ($value2 !== '') { $currentFilter['nested']['query']['bool']['filter'][] = [ "terms" => [ "jalons.progression" => explode(',',$value2), ] ]; if ($value1) { $currentFilter['nested']['query']['bool']['filter'][] = ["term" => ["jalons.type_id" => $value1]]; $criteria = true; } $filterES['ml'][] = $currentFilter; } else if($value2) { $currentFilter = [ "nested" => [ "path" => "jalons", "query" => [ "bool" => [ "filter" => [ ["terms" => [ "jalons.progression" => explode(',',$value2),]] ] ] ] ] ]; if($value2 != "" && $value2 !== null) { $currentFilter['nested']['query']['bool']['filter'][] = ["terms" => ["jalons.progression" => explode(',', $value2)]]; $criteria = true; } if( $value3 ){ $criteria = true; $date = explode(',', $value3); $date1 = $date[0] ?? ""; $date2 = $date[1] ?? ""; $range = []; if( $date1 ){ $range['gte'] = $date1; } if( $date2 ){ $range['lte'] = $date2; } if( $range ){ $currentFilter['nested']['query']['bool']['filter'][] = ["range" => ["jalons.date" => $range ]]; } } if( $criteria ){ $filterES['ml'][] = $currentFilter; } else { $error = "Aucun critère"; $error = "Aucun critère selectionné"; } break; case 'orp': Loading ui/src/components/activitysearch/ActivitySearchFilterMilestone.vue +31 −26 Original line number Diff line number Diff line Loading @@ -14,14 +14,13 @@ </option> </select> </span> <!--<span style="flex: 1"> <datepicker @change="handlerChangeDate1" v-model="filter.value1" /> </span> <strong> < DATE < </strong> <span style="flex: 1"> <datepicker @change="handlerChangeDate2" v-model="filter.value2" /> <span style="display: flex;"> <datepicker @change="handlerChangeDate" v-model="date1" /> <strong> < DATE < </strong> <datepicker @change="handlerChangeDate" v-model="date2" /> </span> </span> --> <span v-if="finishable"> <div class="options"> <SelectAdvanced :options="states" v-model="selectedState" Loading @@ -41,7 +40,6 @@ </template> <script> import Datepicker from "../Datepicker.vue"; import SelectAdvanced from "../SelectAdvanced.vue"; Loading @@ -63,7 +61,9 @@ export default { { id: 100, label: "Validé", descrition: '' }, { id: 200, label: "Sans suite", descrition: '' }, { id: 400, label: "Refusé", descrition: '' }, ] ], date1: "", date2: "", } }, Loading Loading @@ -142,8 +142,17 @@ export default { }, updateFromFilter() { let splited = this.filter.raw.split(";"); this.selected = splited[1]; // console.log(UpdateFrom console.log("Update From Filter", this.filter.value3); let value3 = this.filter.value3 ? this.filter.value3.split(",") : null; console.log("Update From Filter", value3); if (value3) { this.date1 = value3[0]; this.date2 = value3[1]; } else { this.date1 = null; this.date2 = null; } }, handlerRemoveValue(value) { Loading @@ -160,15 +169,11 @@ export default { }, handlerChangeDate1(datevalue) { //let emited = {value1: datevalue, reload: true}; //this.$emit('filter-update', emited ); handlerChangeDate() { let emited = {value3: this.date1 + ',' + this.date2, reload: true}; this.$emit('filter-update', emited); }, handlerChangeDate2(datevalue) { //let emited = {value2: datevalue, reload: true}; //this.$emit('filter-update', emited ); }, }, mounted() { Loading ui/src/views/ActivityList.vue +0 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ @filter-update="handlerUpdateFilter(filter, $event)" @remove="handlerRemoveFilter(filter)" /> {{ Object.keys(filtersOptions) }} </div> </section> </form> Loading ui/src/views/OscarUiDev.vue +5 −2 Original line number Diff line number Diff line <template> <h1>Main title</h1> <h2>UI composantes </h2> <Datepicker v-model="dateexemple" /> <hr> selection: {{ selectedAdvancedItem }} <SelectAdvanced :sort="label" Loading Loading @@ -287,14 +289,15 @@ import OrganizationAutoComplete from "../components/OrganizationAutoComplete.vue"; import PersonAutoCompleter from "../components/PersonAutoCompleter.vue"; import SelectAdvanced from "../components/SelectAdvanced.vue"; import Datepicker from "../components/Datepicker.vue"; export default { components: {OrganizationAutoComplete, PersonAutoCompleter, SelectAdvanced}, components: {Datepicker, OrganizationAutoComplete, PersonAutoCompleter, SelectAdvanced}, data(){ return { selectedOrganization: null, selectedPerson: null, dateexemple: '2024-07-04', selectedAdvancedOptions: [ { id: 1, label: "Option A", description: "Première option" }, { id: 2, label: "Option B", description: "Deuxième option" }, Loading Loading
module/Oscar/src/Oscar/Service/ProjectGrantService.php +51 −33 Original line number Diff line number Diff line Loading @@ -2332,6 +2332,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi $error = ""; switch ($type) { ///////////////////////////////////////////// ANNEE d'ACTIVITE case 'da': $key = $type; $min = "$value1-01-01"; Loading @@ -2341,8 +2342,9 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } $filterES['da'][] = ['range' => [ 'dateStart' => ['lte' => $max] ]]; $filterES['da'][] = ['range' => [ 'dateEnd' => ['gte' => $min] ]]; break; ///////////////////////////////////////////// LES DATES case 'adc': case 'adf': case 'ads': Loading Loading @@ -2375,6 +2377,8 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// STATUS case 'as': if( !$value1 ){ $error = "Aucun status selectionné"; Loading @@ -2399,6 +2403,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi break; ///////////////////////////////////////////// TYPES case 'at': if (!array_key_exists('at', $filterES)) { $filterES['at'] = [ Loading @@ -2416,6 +2421,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// PERSONNES case 'ap': if (!array_key_exists('ap', $filterES)) { $filterES['ap'] = []; Loading Loading @@ -2470,6 +2476,7 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// ORGANISATION case 'ao': if (!array_key_exists('ao', $filterES)) { $filterES['ao'] = []; Loading Loading @@ -2524,52 +2531,63 @@ class ProjectGrantService implements UseGearmanJobLauncherService, UseOscarConfi } break; ///////////////////////////////////////////// JALONS case 'ml': if (!array_key_exists('ml', $filterES)) { $filterES['ml'] = []; } if ($value1) { $criteria = false; $currentFilter = [ "nested" => [ "path" => "jalons", "query" => [ "bool" => [ "filter" => [ ["term" => ["jalons.type_id" => $value1]] ] ] ] ] ]; if ($value2 !== '') { $currentFilter['nested']['query']['bool']['filter'][] = [ "terms" => [ "jalons.progression" => explode(',',$value2), ] ]; if ($value1) { $currentFilter['nested']['query']['bool']['filter'][] = ["term" => ["jalons.type_id" => $value1]]; $criteria = true; } $filterES['ml'][] = $currentFilter; } else if($value2) { $currentFilter = [ "nested" => [ "path" => "jalons", "query" => [ "bool" => [ "filter" => [ ["terms" => [ "jalons.progression" => explode(',',$value2),]] ] ] ] ] ]; if($value2 != "" && $value2 !== null) { $currentFilter['nested']['query']['bool']['filter'][] = ["terms" => ["jalons.progression" => explode(',', $value2)]]; $criteria = true; } if( $value3 ){ $criteria = true; $date = explode(',', $value3); $date1 = $date[0] ?? ""; $date2 = $date[1] ?? ""; $range = []; if( $date1 ){ $range['gte'] = $date1; } if( $date2 ){ $range['lte'] = $date2; } if( $range ){ $currentFilter['nested']['query']['bool']['filter'][] = ["range" => ["jalons.date" => $range ]]; } } if( $criteria ){ $filterES['ml'][] = $currentFilter; } else { $error = "Aucun critère"; $error = "Aucun critère selectionné"; } break; case 'orp': Loading
ui/src/components/activitysearch/ActivitySearchFilterMilestone.vue +31 −26 Original line number Diff line number Diff line Loading @@ -14,14 +14,13 @@ </option> </select> </span> <!--<span style="flex: 1"> <datepicker @change="handlerChangeDate1" v-model="filter.value1" /> </span> <strong> < DATE < </strong> <span style="flex: 1"> <datepicker @change="handlerChangeDate2" v-model="filter.value2" /> <span style="display: flex;"> <datepicker @change="handlerChangeDate" v-model="date1" /> <strong> < DATE < </strong> <datepicker @change="handlerChangeDate" v-model="date2" /> </span> </span> --> <span v-if="finishable"> <div class="options"> <SelectAdvanced :options="states" v-model="selectedState" Loading @@ -41,7 +40,6 @@ </template> <script> import Datepicker from "../Datepicker.vue"; import SelectAdvanced from "../SelectAdvanced.vue"; Loading @@ -63,7 +61,9 @@ export default { { id: 100, label: "Validé", descrition: '' }, { id: 200, label: "Sans suite", descrition: '' }, { id: 400, label: "Refusé", descrition: '' }, ] ], date1: "", date2: "", } }, Loading Loading @@ -142,8 +142,17 @@ export default { }, updateFromFilter() { let splited = this.filter.raw.split(";"); this.selected = splited[1]; // console.log(UpdateFrom console.log("Update From Filter", this.filter.value3); let value3 = this.filter.value3 ? this.filter.value3.split(",") : null; console.log("Update From Filter", value3); if (value3) { this.date1 = value3[0]; this.date2 = value3[1]; } else { this.date1 = null; this.date2 = null; } }, handlerRemoveValue(value) { Loading @@ -160,15 +169,11 @@ export default { }, handlerChangeDate1(datevalue) { //let emited = {value1: datevalue, reload: true}; //this.$emit('filter-update', emited ); handlerChangeDate() { let emited = {value3: this.date1 + ',' + this.date2, reload: true}; this.$emit('filter-update', emited); }, handlerChangeDate2(datevalue) { //let emited = {value2: datevalue, reload: true}; //this.$emit('filter-update', emited ); }, }, mounted() { Loading
ui/src/views/ActivityList.vue +0 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ @filter-update="handlerUpdateFilter(filter, $event)" @remove="handlerRemoveFilter(filter)" /> {{ Object.keys(filtersOptions) }} </div> </section> </form> Loading
ui/src/views/OscarUiDev.vue +5 −2 Original line number Diff line number Diff line <template> <h1>Main title</h1> <h2>UI composantes </h2> <Datepicker v-model="dateexemple" /> <hr> selection: {{ selectedAdvancedItem }} <SelectAdvanced :sort="label" Loading Loading @@ -287,14 +289,15 @@ import OrganizationAutoComplete from "../components/OrganizationAutoComplete.vue"; import PersonAutoCompleter from "../components/PersonAutoCompleter.vue"; import SelectAdvanced from "../components/SelectAdvanced.vue"; import Datepicker from "../components/Datepicker.vue"; export default { components: {OrganizationAutoComplete, PersonAutoCompleter, SelectAdvanced}, components: {Datepicker, OrganizationAutoComplete, PersonAutoCompleter, SelectAdvanced}, data(){ return { selectedOrganization: null, selectedPerson: null, dateexemple: '2024-07-04', selectedAdvancedOptions: [ { id: 1, label: "Option A", description: "Première option" }, { id: 2, label: "Option B", description: "Deuxième option" }, Loading