@odoo/o-spreadsheet 17.4.0-alpha.1 → 17.4.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  <!--
2
2
  This file is generated by o-spreadsheet build tools. Do not edit it.
3
3
  @see https://github.com/odoo/o-spreadsheet
4
- @version 17.4.0-alpha.1
5
- @date 2024-06-03T15:31:14.056Z
6
- @hash cb56c37
4
+ @version 17.4.0-alpha.10
5
+ @date 2024-07-02T09:04:53.197Z
6
+ @hash a68d9f2
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ActionButton">
@@ -272,7 +272,8 @@
272
272
  t-att-class="{'o-sheet-name-editable': state.isEditing }"
273
273
  t-ref="sheetNameSpan"
274
274
  t-esc="sheetName"
275
- t-on-click="(ev) => this.onClickSheetName(ev)"
275
+ t-on-click="(ev) => this.onMouseEventSheetName(ev)"
276
+ t-on-pointerdown="(ev) => this.onMouseEventSheetName(ev)"
276
277
  t-on-dblclick="() => this.onDblClick()"
277
278
  t-on-focusout="() => this.onFocusOut()"
278
279
  t-on-keydown="(ev) => this.onKeyDown(ev)"
@@ -669,7 +670,7 @@
669
670
  </t>
670
671
 
671
672
  <t t-name="o-spreadsheet-ScorecardChart">
672
- <canvas class="o-figure-canvas w-100 h-100" t-ref="chartContainer"/>
673
+ <canvas class="o-figure-canvas w-100 h-100" t-ref="chartContainer" t-att-title="title"/>
673
674
  </t>
674
675
 
675
676
  <t t-name="o-spreadsheet-FigureComponent">
@@ -2244,6 +2245,25 @@
2244
2245
  <t t-call="o-spreadsheet-Icon.TRIANGLE_EXCLAMATION"/>
2245
2246
  </div>
2246
2247
  </t>
2248
+ <t t-name="o-spreadsheet-Icon.INSERT_PIVOT">
2249
+ <svg class="o-icon">
2250
+ <defs>
2251
+ <mask id="a">
2252
+ <path fill="#fff" d="M0 0h18v18H0z"/>
2253
+ <path d="M18 26a3.5 3 0 0 1 0-18"/>
2254
+ </mask>
2255
+ </defs>
2256
+ <path
2257
+ fill="currentColor"
2258
+ d="M17 2v14H1V6h4V2h12m-1 1H6v3h10M2 7v2h3V7m-3 3v2h3v-2m-3 3v2h3v-2m1-6v2h6V7m-6 3v2h6v-2m-6 3v2h6v-2m1-6v2h3V7m-3 3v2h3v-2m-3 3v2h3v-2"
2259
+ mask="url(#a)"
2260
+ />
2261
+ <path
2262
+ fill="currentColor"
2263
+ d="M13 13v-3a.75.5 0 0 1 1.5 0v3h3a.5.75 0 0 1 0 1.5h-3v3a.75.5 0 0 1-1.5 0v-3h-3a.5.75 0 0 1 0-1.5"
2264
+ />
2265
+ </svg>
2266
+ </t>
2247
2267
 
2248
2268
  <t t-name="o-spreadsheet-LinkDisplay">
2249
2269
  <div class="o-link-tool d-flex align-items-center">
@@ -2505,7 +2525,7 @@
2505
2525
  <Section class="'pt-0'">
2506
2526
  <Checkbox
2507
2527
  name="'stacked'"
2508
- label="stackedLabel"
2528
+ label="chartTerms.StackedBarChart"
2509
2529
  value="props.definition.stacked"
2510
2530
  onChange.bind="onUpdateStacked"
2511
2531
  />
@@ -2751,6 +2771,264 @@
2751
2771
  </Section>
2752
2772
  </t>
2753
2773
 
2774
+ <t t-name="o-spreadsheet-ChartPreview.LINE_CHART">
2775
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2776
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2777
+ <path stroke="#eb6d00" style="fill:none" d="M6,40 l12,-12 l6,6 l18,-18"/>
2778
+ <path stroke="#0074d9" style="fill:none" d="M6,25 l12,-12 l18,18 l6,-6"/>
2779
+ </svg>
2780
+ </t>
2781
+ <t t-name="o-spreadsheet-ChartPreview.STACKED_LINE_CHART">
2782
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2783
+ <path stroke="#0074d9" style="fill:none" d="M3,30 l12,-12 l6,6 l18,-18"/>
2784
+ <path stroke="#eb6d00" style="fill:none" d="M3,40 l12,-12 l6,6 l18,-12"/>
2785
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2786
+ </svg>
2787
+ </t>
2788
+ <t t-name="o-spreadsheet-ChartPreview.AREA_CHART">
2789
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2790
+ <path fill="#c4e4ff" d="M3,45 V25 l12,-12 l18,18 l6,-6 V45"/>
2791
+ <path fill="#ffe1c8" d="M3,45 V40 l12,-12 l6,6 l18,-18 V45"/>
2792
+ <path stroke="#eb6d00" style="fill:none" d="M3,40 l12,-12 l6,6 l18,-18"/>
2793
+ <path stroke="#0074d9" style="fill:none" d="M3,25 l12,-12 l18,18 l6,-6"/>
2794
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2795
+ </svg>
2796
+ </t>
2797
+ <t t-name="o-spreadsheet-ChartPreview.STACKED_AREA_CHART">
2798
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2799
+ <path fill="#c4e4ff" d="M3,45 h36 v-39 l-18,18 l-6,-6 l-12,12"/>
2800
+ <path stroke="#0074d9" style="fill:none" d="M3,30 l12,-12 l6,6 l18,-18"/>
2801
+ <path fill="#ffe1c8" d="M3,45 h36 v-23 l-18,12 l-6,-6 l-12,12"/>
2802
+ <path stroke="#eb6d00" style="fill:none" d="M3,40 l12,-12 l6,6 l18,-12"/>
2803
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2804
+ </svg>
2805
+ </t>
2806
+ <t t-name="o-spreadsheet-ChartPreview.COLUMN_CHART">
2807
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2808
+ <path fill="#0074d9" d="M7,45 v-28 h6 v28"/>
2809
+ <path fill="#c4e4ff" d="M8,45 v-27 h4 v27"/>
2810
+ <path fill="#eb6d00" d="M14,45 v-14 h6 v14"/>
2811
+ <path fill="#ffe1c8" d="M15,45 v-13 h4 v13"/>
2812
+ <path fill="#0074d9" d="M26,45 v-22 h6 v22"/>
2813
+ <path fill="#c4e4ff" d="M27,45 v-21 h4 v21"/>
2814
+ <path fill="#eb6d00" d="M33,45 v-32 h6 v32"/>
2815
+ <path fill="#ffe1c8" d="M34,45 v-31 h4 v31"/>
2816
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2817
+ </svg>
2818
+ </t>
2819
+ <t t-name="o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART">
2820
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2821
+ <path fill="#0074d9" d="M7,45 v-12 h8 v12"/>
2822
+ <path fill="#c4e4ff" d="M8,45 v-11 h6 v11"/>
2823
+ <path fill="#eb6d00" d="M7,33 v-14 h8 v14"/>
2824
+ <path fill="#ffe1c8" d="M8,33 v-13 h6 v13"/>
2825
+
2826
+ <path fill="#0074d9" d="M20,45 v-8 h8 v8"/>
2827
+ <path fill="#c4e4ff" d="M21,45 v-7 h6 v7"/>
2828
+ <path fill="#eb6d00" d="M20,37 v-9 h8 v9"/>
2829
+ <path fill="#ffe1c8" d="M21,37 v-8 h6 v8"/>
2830
+
2831
+ <path fill="#0074d9" d="M33,45 v-18 h8 v18"/>
2832
+ <path fill="#c4e4ff" d="M34,45 v-17 h6 v17"/>
2833
+ <path fill="#eb6d00" d="M33,27 v-16 h8 v16"/>
2834
+ <path fill="#ffe1c8" d="M34,27 v-15 h6 v15"/>
2835
+
2836
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2837
+ </svg>
2838
+ </t>
2839
+ <t t-name="o-spreadsheet-ChartPreview.BAR_CHART">
2840
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2841
+ <g transform="matrix(0 1 -1 0 48 3)">
2842
+ <path fill="#0074d9" d="M7,45 v-28 h6 v28"/>
2843
+ <path fill="#c4e4ff" d="M8,45 v-27 h4 v27"/>
2844
+ <path fill="#eb6d00" d="M14,45 v-14 h6 v14"/>
2845
+ <path fill="#ffe1c8" d="M15,45 v-13 h4 v13"/>
2846
+ <path fill="#0074d9" d="M26,45 v-22 h6 v22"/>
2847
+ <path fill="#c4e4ff" d="M27,45 v-21 h4 v21"/>
2848
+ <path fill="#eb6d00" d="M33,45 v-32 h6 v32"/>
2849
+ <path fill="#ffe1c8" d="M34,45 v-31 h4 v31"/>
2850
+ </g>
2851
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2852
+ </svg>
2853
+ </t>
2854
+ <t t-name="o-spreadsheet-ChartPreview.STACKED_BAR_CHART">
2855
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2856
+ <g transform="matrix(0 1 -1 0 48 1)">
2857
+ <path fill="#0074d9" d="M7,45 v-12 h8 v12"/>
2858
+ <path fill="#c4e4ff" d="M8,45 v-11 h6 v11"/>
2859
+ <path fill="#eb6d00" d="M7,33 v-14 h8 v14"/>
2860
+ <path fill="#ffe1c8" d="M8,33 v-13 h6 v13"/>
2861
+ <path fill="#0074d9" d="M20,45 v-8 h8 v8"/>
2862
+ <path fill="#c4e4ff" d="M21,45 v-7 h6 v7"/>
2863
+ <path fill="#eb6d00" d="M20,37 v-9 h8 v9"/>
2864
+ <path fill="#ffe1c8" d="M21,37 v-8 h6 v8"/>
2865
+ <path fill="#0074d9" d="M33,45 v-18 h8 v18"/>
2866
+ <path fill="#c4e4ff" d="M34,45 v-17 h6 v17"/>
2867
+ <path fill="#eb6d00" d="M33,27 v-16 h8 v16"/>
2868
+ <path fill="#ffe1c8" d="M34,27 v-15 h6 v15"/>
2869
+ </g>
2870
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2871
+ </svg>
2872
+ </t>
2873
+ <t t-name="o-spreadsheet-ChartPreview.COMBO_CHART">
2874
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2875
+ <path fill="#0074d9" d="M7,45 v-14 h6 v14"/>
2876
+ <path fill="#c4e4ff" d="M8,45 v-13 h4 v13"/>
2877
+ <path fill="#eb6d00" d="M14,45 v-28 h6 v28"/>
2878
+ <path fill="#ffe1c8" d="M15,45 v-27 h4 v27"/>
2879
+ <path fill="#0074d9" d="M26,45 v-22 h6 v22"/>
2880
+ <path fill="#c4e4ff" d="M27,45 v-21 h4 v21"/>
2881
+ <path fill="#eb6d00" d="M33,45 v-32 h6 v32"/>
2882
+ <path fill="#ffe1c8" d="M34,45 v-31 h4 v31"/>
2883
+ <path stroke="#888" style="fill:none;stroke-width:1.5;" d="M4,40 l14,-12 l6,6 l20,-18"/>
2884
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2885
+ </svg>
2886
+ </t>
2887
+ <t t-name="o-spreadsheet-ChartPreview.PIE_CHART">
2888
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2889
+ <path fill="#ffe1c8" stroke="#eb6d00" d="M41.32, 34 A20 20, 0, 1, 1, 24, 4 v20"/>
2890
+ <path fill="#c4e4ff" stroke="#0074d9" d="M24,24 v-20 A20 20, 0, 0, 1, 41.32, 34 L24,24"/>
2891
+ </svg>
2892
+ </t>
2893
+ <t t-name="o-spreadsheet-ChartPreview.DOUGHNUT_CHART">
2894
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2895
+ <path
2896
+ fill="#ffe1c8"
2897
+ stroke="#eb6d00"
2898
+ d="M41.32, 34 A20 20, 0, 1, 1, 24, 4 v8 A12,12,0,1,0,34.4,30"
2899
+ />
2900
+ <path
2901
+ fill="#c4e4ff"
2902
+ stroke="#0074d9"
2903
+ d="M24,12 v-8 A20 20, 0, 0, 1, 41.32, 34 L34.4,30 A12,12,0,0,0,24,12"
2904
+ />
2905
+ </svg>
2906
+ </t>
2907
+ <t t-name="o-spreadsheet-ChartPreview.SCATTER_CHART">
2908
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2909
+ <circle fill="#0074d9" cx="10" cy="10" r="2"/>
2910
+ <circle fill="#0074d9" cx="15" cy="30" r="2"/>
2911
+ <circle fill="#0074d9" cx="25" cy="36" r="2"/>
2912
+ <circle fill="#0074d9" cx="32" cy="15" r="2"/>
2913
+ <circle fill="#eb6d00" cx="10" cy="40" r="2"/>
2914
+ <circle fill="#eb6d00" cx="18" cy="20" r="2"/>
2915
+ <circle fill="#eb6d00" cx="30" cy="25" r="2"/>
2916
+ <circle fill="#eb6d00" cx="40" cy="33" r="2"/>
2917
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2918
+ </svg>
2919
+ </t>
2920
+ <t t-name="o-spreadsheet-ChartPreview.GAUGE_CHART">
2921
+ <svg
2922
+ viewBox="0 0 48 48"
2923
+ class="o-chart-preview user-select-none"
2924
+ xmlns="http://www.w3.org/2000/svg">
2925
+ <path fill="#ccc" d="M2,32 A22,22,0,0,1,46,32 h-6 A16,16,0,0,0,8,32"/>
2926
+ <path fill="#6aa84f" d="M2,32 A22,22,0,0,1,35,13 L32,18.2 A16,16,0,0,0,8,32"/>
2927
+ <text x="17" y="32" style="font-size:12px;">62</text>
2928
+ </svg>
2929
+ </t>
2930
+ <t t-name="o-spreadsheet-ChartPreview.SCORECARD_CHART">
2931
+ <svg
2932
+ viewBox="0 0 48 48"
2933
+ class="o-chart-preview user-select-none"
2934
+ xmlns="http://www.w3.org/2000/svg">
2935
+ <path fill="#ddd" d="M1,8 h46 v32 h-46"/>
2936
+ <path fill="#eee" d="M2,9 h44 v30 h-44"/>
2937
+ <text x="9" y="32" style="font-size:18px;">123</text>
2938
+ </svg>
2939
+ </t>
2940
+ <t t-name="o-spreadsheet-ChartPreview.WATERFALL_CHART">
2941
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2942
+ <path fill="#444" d="M5,45 v-26 h6 v26"/>
2943
+ <path fill="#fff" d="M6,45 v-25 h4 v25"/>
2944
+ <path fill="#eb6d00" d="M13,19 v7 h6 v-7"/>
2945
+ <path fill="#ffe1c8" d="M14,20 v5 h4 v-5"/>
2946
+ <path fill="#eb6d00" d="M21,25 v10 h6 v-10"/>
2947
+ <path fill="#ffe1c8" d="M22,26 v8 h4 v-8"/>
2948
+ <path fill="#0074d9" d="M29,35 v-24 h6 v24"/>
2949
+ <path fill="#c4e4ff" d="M30,34 v-22 h4 v22"/>
2950
+ <path fill="#444" d="M37,45 v-34 h6 v34"/>
2951
+ <path fill="#fff" d="M38,45 v-33 h4 v33"/>
2952
+ <path fill="#444" d="M11,20 v-1 h2 v1 M19,26 v-1 h2 v1 M27,35 v-1 h2 v1 M35,12 v-1 h2 v1"/>
2953
+ <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
2954
+ </svg>
2955
+ </t>
2956
+ <t t-name="o-spreadsheet-ChartPreview.POPULATION_PYRAMID_CHART">
2957
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
2958
+ <path fill="#eb6d00" d="M23,43 v-6 h22 v6"/>
2959
+ <path fill="#ffe1c8" d="M23,42 v-4 h21 v4"/>
2960
+ <path fill="#eb6d00" d="M23,36 v-6 h18 v6"/>
2961
+ <path fill="#ffe1c8" d="M23,35 v-4 h17 v4"/>
2962
+ <path fill="#eb6d00" d="M23,29 v-6 h12 v6"/>
2963
+ <path fill="#ffe1c8" d="M23,28 v-4 h11 v4"/>
2964
+ <path fill="#eb6d00" d="M23,22 v-6 h8 v6"/>
2965
+ <path fill="#ffe1c8" d="M23,21 v-4 h7 v4"/>
2966
+ <path fill="#eb6d00" d="M23,15 v-6 h4 v6"/>
2967
+ <path fill="#ffe1c8" d="M23,14 v-4 h3 v4"/>
2968
+
2969
+ <path fill="#0074d9" d="M24,43 v-6 h-20 v6"/>
2970
+ <path fill="#c4e4ff" d="M24,42 v-4 h-19 v4"/>
2971
+ <path fill="#0074d9" d="M24,36 v-6 h-18 v6"/>
2972
+ <path fill="#c4e4ff" d="M24,35 v-4 h-17 v4"/>
2973
+ <path fill="#0074d9" d="M24,29 v-6 h-12 v6"/>
2974
+ <path fill="#c4e4ff" d="M24,28 v-4 h-11 v4"/>
2975
+ <path fill="#0074d9" d="M24,22 v-6 h-6 v6"/>
2976
+ <path fill="#c4e4ff" d="M24,21 v-4 h-5 v4"/>
2977
+ <path fill="#0074d9" d="M24,15 v-6 h-4 v6"/>
2978
+ <path fill="#c4e4ff" d="M24,14 v-4 h-3 v4"/>
2979
+
2980
+ <path fill="#444" d="M23,2 v43 h1 v-43 M2,45 h44 v1 h-44"/>
2981
+ </svg>
2982
+ </t>
2983
+
2984
+ <t t-name="o-spreadsheet-ChartTypePicker">
2985
+ <t t-set="selectedChartProperties" t-value="getSelectedChartSubtypeProperties()"/>
2986
+ <Section>
2987
+ <t t-set-slot="title">Chart type</t>
2988
+ <div class="position-relative">
2989
+ <select
2990
+ class="o-input o-type-selector"
2991
+ t-ref="selectRef"
2992
+ t-on-pointerdown.prevent="onPointerDown">
2993
+ <option
2994
+ t-esc="selectedChartProperties.displayName"
2995
+ t-att-value="selectedChartProperties.chartSubtype"
2996
+ />
2997
+ </select>
2998
+ <div class="o-type-selector-preview position-absolute">
2999
+ <t t-call="{{selectedChartProperties.preview}}"/>
3000
+ </div>
3001
+ </div>
3002
+ </Section>
3003
+ <Popover t-if="state.popoverProps" t-props="state.popoverProps">
3004
+ <div
3005
+ t-ref="popoverRef"
3006
+ class="o-chart-select-popover px-3 pb-4"
3007
+ t-att-style="state.popoverStyle">
3008
+ <t t-foreach="categories" t-as="category" t-key="category">
3009
+ <t t-if="chartTypeByCategories[category]">
3010
+ <h5 class="my-3" t-esc="category_value"/>
3011
+ <div class="d-flex flex-wrap">
3012
+ <t
3013
+ t-foreach="chartTypeByCategories[category]"
3014
+ t-as="properties"
3015
+ t-key="properties.chartSubtype">
3016
+ <div
3017
+ class="o-chart-type-item"
3018
+ t-att-title="properties.displayName"
3019
+ t-on-click="() => this.onTypeChange(properties.chartSubtype)"
3020
+ t-att-data-id="properties.chartSubtype"
3021
+ t-att-class="{'selected': properties === selectedChartProperties}">
3022
+ <t t-call="{{properties.preview}}"/>
3023
+ </div>
3024
+ </t>
3025
+ </div>
3026
+ </t>
3027
+ </t>
3028
+ </div>
3029
+ </Popover>
3030
+ </t>
3031
+
2754
3032
  <t t-name="o-spreadsheet-ChartWithAxisDesignPanel">
2755
3033
  <GeneralDesignEditor
2756
3034
  figureId="props.figureId"
@@ -2780,7 +3058,7 @@
2780
3058
  class="o-input data-series-selector"
2781
3059
  t-model="state.label"
2782
3060
  t-on-change="(ev) => this.updateSerieEditor(ev)">
2783
- <t t-foreach="getDataSeries()" t-as="serie" t-key="serie" t-index="index">
3061
+ <t t-foreach="getDataSeries()" t-as="serie" t-key="serie_index">
2784
3062
  <option
2785
3063
  t-att-value="serie"
2786
3064
  t-att-selected="state.index === serie_index"
@@ -2797,7 +3075,7 @@
2797
3075
  />
2798
3076
  </div>
2799
3077
  </Section>
2800
- <Section class="'pt-0 px-0'">
3078
+ <Section class="'pt-0 px-0'" t-if="canHaveTwoVerticalAxis">
2801
3079
  <t t-set-slot="title">Vertical axis</t>
2802
3080
  <select
2803
3081
  t-att-value="getDataSerieAxis()"
@@ -3005,7 +3283,7 @@
3005
3283
  />
3006
3284
  <Checkbox
3007
3285
  name="'cumulative'"
3008
- label="cumulativeLabel"
3286
+ label="chartTerms.CumulativeData"
3009
3287
  value="props.definition.cumulative"
3010
3288
  onChange.bind="onUpdateCumulative"
3011
3289
  />
@@ -3056,22 +3334,7 @@
3056
3334
 
3057
3335
  <t t-set="definition" t-value="getChartDefinition(this.figureId)"/>
3058
3336
  <t t-if="store.panel === 'configuration'">
3059
- <Section>
3060
- <t t-set-slot="title">Chart type</t>
3061
- <t t-set="types" t-value="chartTypes"/>
3062
- <select
3063
- class="o-input o-type-selector"
3064
- t-on-change="(ev) => this.onTypeChange(ev.target.value)">
3065
- <option
3066
- t-foreach="chartTypes"
3067
- t-as="type"
3068
- t-key="type"
3069
- t-att-value="type"
3070
- t-esc="types[type]"
3071
- t-att-selected="definition.type === type"
3072
- />
3073
- </select>
3074
- </Section>
3337
+ <ChartTypePicker figureId="props.figureId" chartPanelStore="store"/>
3075
3338
  <t
3076
3339
  t-component="chartPanel.configuration"
3077
3340
  definition="definition"
@@ -3353,6 +3616,23 @@
3353
3616
  </label>
3354
3617
  </t>
3355
3618
 
3619
+ <t t-name="o-spreadsheet-CogWheelMenu">
3620
+ <span class="fa fa-cog os-cog-wheel-menu-icon" t-on-click="togglePopover" t-ref="button"/>
3621
+ <Popover t-if="popover.isOpen" t-props="popoverProps">
3622
+ <div class="d-flex flex-column align-items-start os-cog-wheel-menu my-2">
3623
+ <div
3624
+ t-foreach="props.items"
3625
+ t-as="item"
3626
+ t-key="item.name"
3627
+ t-on-click="() => this.onClick(item)"
3628
+ class="btn btn-link me-3">
3629
+ <i t-if="item.icon" t-att-class="'me-2 fa ' + item.icon"/>
3630
+ <t t-esc="item.name"/>
3631
+ </div>
3632
+ </div>
3633
+ </Popover>
3634
+ </t>
3635
+
3356
3636
  <t t-name="o-spreadsheet-SidePanelCollapsible">
3357
3637
  <div class="p-1 m-1" t-att-class="props.class">
3358
3638
  <div class="o_side_panel_collapsible_title d-flex align-items-center">
@@ -4160,15 +4440,16 @@
4160
4440
  </div>
4161
4441
  </div>
4162
4442
  <select
4163
- class="o-input o-type-selector o-type-range-selector mt-3 mb-3"
4164
- t-on-change="changeSearchScope">
4443
+ class="o-input o-type-range-selector mt-3 mb-3"
4444
+ t-on-change="changeSearchScope"
4445
+ t-att-value="searchOptions.searchScope">
4165
4446
  <option value="allSheets">All sheets</option>
4166
4447
  <option value="activeSheet">Current sheet</option>
4167
4448
  <option value="specificRange">Specific range</option>
4168
4449
  </select>
4169
4450
  <div t-if="searchOptions.searchScope === 'specificRange'">
4170
4451
  <SelectionInput
4171
- ranges="[this.dataRange]"
4452
+ ranges="[this.state.dataRange]"
4172
4453
  onSelectionChanged="(ranges) => this.onSearchRangeChanged(ranges)"
4173
4454
  onSelectionConfirmed.bind="updateDataRange"
4174
4455
  hasSingleRange="true"
@@ -4197,7 +4478,7 @@
4197
4478
  />
4198
4479
  </div>
4199
4480
  <div class="o-matches-count mt-4" t-if="store.toSearch !== ''">
4200
- <div t-if="searchOptions.searchScope === 'specificRange' and dataRange != ''">
4481
+ <div t-if="searchOptions.searchScope === 'specificRange' and state.dataRange != ''">
4201
4482
  <t t-esc="specificRangeMatchesCount"/>
4202
4483
  </div>
4203
4484
  <div>
@@ -4286,6 +4567,31 @@
4286
4567
  </t>
4287
4568
  </t>
4288
4569
 
4570
+ <t t-name="o-spreadsheet-PivotDeferUpdate">
4571
+ <Section
4572
+ class="'align-items-center border-top d-flex flex-row justify-content-between py-1 pivot-defer-update'">
4573
+ <Checkbox
4574
+ label="deferUpdatesLabel"
4575
+ title="deferUpdatesTooltip"
4576
+ value="props.deferUpdate"
4577
+ onChange="(value) => props.toggleDeferUpdate(value)"
4578
+ />
4579
+ <div t-if="props.isDirty">
4580
+ <i
4581
+ class="btn btn-sm pe-0 fa fa-undo"
4582
+ title="Discard all changes"
4583
+ t-on-click="() => props.discard()"
4584
+ />
4585
+ <span
4586
+ class="btn btm-sm btn-link sp_apply_update"
4587
+ title="Apply all changes"
4588
+ t-on-click="() => props.apply()">
4589
+ Update
4590
+ </span>
4591
+ </div>
4592
+ </Section>
4593
+ </t>
4594
+
4289
4595
  <t t-name="o-spreadsheet-AddDimensionButton">
4290
4596
  <span class="btn btn-sm btn-link add-dimension" t-on-click="togglePopover" t-ref="button">
4291
4597
  Add
@@ -4332,9 +4638,9 @@
4332
4638
  <div class="d-flex flex-row">
4333
4639
  <div class="d-flex flex-row py-1 px-2 w-100 small">
4334
4640
  <t t-set="granularity" t-value="props.dimension.granularity"/>
4335
- <div class="flex-basis-50">Granularity</div>
4641
+ <div class="pivot-dim-operator-label">Granularity</div>
4336
4642
  <select
4337
- class="o_input flex-basis-50"
4643
+ class="o_input flex-grow-1"
4338
4644
  t-on-change="(ev) => props.onUpdated(props.dimension, ev.target.value)">
4339
4645
  <option
4340
4646
  t-foreach="props.allGranularities"
@@ -4353,9 +4659,9 @@
4353
4659
  <t t-name="o-spreadsheet-PivotDimensionOrder">
4354
4660
  <div class="d-flex">
4355
4661
  <div class="d-flex py-1 px-2 w-100 small">
4356
- <div class="flex-basis-50">Order by</div>
4662
+ <div class="pivot-dim-operator-label">Order by</div>
4357
4663
  <select
4358
- class="o_input flex-basis-50"
4664
+ class="o_input flex-grow-1"
4359
4665
  t-on-change="(ev) => props.onUpdated(props.dimension, ev.target.value)">
4360
4666
  <option value="asc" t-att-selected="props.dimension.order === 'asc'">Ascending</option>
4361
4667
  <option value="desc" t-att-selected="props.dimension.order === 'desc'">Descending</option>
@@ -4439,9 +4745,9 @@
4439
4745
  <PivotDimension dimension="measure" onRemoved.bind="removeMeasureDimension">
4440
4746
  <div class="d-flex flex-row small">
4441
4747
  <div class="d-flex flex-row py-1 px-2 w-100">
4442
- <div class="flex-basis-50">Aggregated by</div>
4748
+ <div class="pivot-dim-operator-label">Aggregated by</div>
4443
4749
  <select
4444
- class="o_input flex-basis-50"
4750
+ class="o_input flex-grow-1"
4445
4751
  t-on-change="(ev) => this.updateAggregator(measure, ev.target.value)">
4446
4752
  <option
4447
4753
  t-foreach="Object.keys(AGGREGATORS[measure.type])"
@@ -4460,35 +4766,14 @@
4460
4766
  </div>
4461
4767
  </t>
4462
4768
 
4463
- <t t-name="o-spreadsheet-PivotListItem">
4464
- <div
4465
- class="o_pivot_list_item p-4 border-bottom"
4466
- t-ref="pivotListItem"
4467
- t-on-click="this.selectPivot">
4468
- <span t-esc="env.model.getters.getPivotDisplayName(props.pivotId)"/>
4469
- </div>
4470
- </t>
4471
-
4472
4769
  <t t-name="o-spreadsheet-PivotSidePanel">
4473
- <t t-if="props.pivotId" t-component="sidePanelEditor" t-props="props"/>
4474
- <t t-else="">
4475
- <t t-foreach="env.model.getters.getPivotIds()" t-as="pivotId" t-key="pivotId">
4476
- <PivotListItem pivotId="pivotId"/>
4477
- </t>
4478
- </t>
4770
+ <t t-component="sidePanelEditor" t-props="props"/>
4479
4771
  </t>
4480
4772
 
4481
4773
  <t t-name="o-spreadsheet-PivotSpreadsheetSidePanel">
4482
4774
  <div class="d-flex flex-column h-100 justify-content-between overflow-hidden">
4483
4775
  <div class="h-100 overflow-auto">
4484
- <Section>
4485
- <t t-set-slot="title">Name</t>
4486
- <EditableName name="name" displayName="displayName" onChanged.bind="onNameChanged"/>
4487
- <div class="btn btn-link o_duplicate_pivot" t-on-click="duplicatePivot">
4488
- <i class="fa fa-solid fa-copy me-1"/>
4489
- Duplicate Pivot
4490
- </div>
4491
- </Section>
4776
+ <PivotTitleSection pivotId="props.pivotId" flipAxis.bind="flipAxis"/>
4492
4777
  <Section>
4493
4778
  <t t-set-slot="title">Range</t>
4494
4779
  <SelectionInput
@@ -4515,38 +4800,29 @@
4515
4800
  definition="definition"
4516
4801
  onDimensionsUpdated.bind="onDimensionsUpdated"
4517
4802
  />
4518
- <Section>
4519
- <button class="btn btn-link sp_back" t-on-click="back">Back</button>
4520
- <button class="btn btn-link sp_delete" t-on-click="delete">Delete</button>
4521
- </Section>
4522
4803
  </div>
4523
- <Section
4524
- class="'align-items-center border-top d-flex flex-row justify-content-between py-1 pivot-defer-update'">
4525
- <Checkbox
4526
- label="deferUpdatesLabel"
4527
- title="deferUpdatesTooltip"
4528
- value="store.updatesAreDeferred"
4529
- onChange="(value) => store.deferUpdates(value)"
4530
- />
4531
- <div>
4532
- <i
4533
- t-if="store.isDirty"
4534
- class="btn btn-sm pe-0 fa fa-undo"
4535
- title="Discard all changes"
4536
- t-on-click="() => store.discardPendingUpdate()"
4537
- />
4538
- <span
4539
- t-if="store.isDirty"
4540
- class="btn btm-sm btn-link sp_apply_update"
4541
- title="Apply all changes"
4542
- t-on-click="() => store.applyUpdate()">
4543
- Update
4544
- </span>
4545
- </div>
4546
- </Section>
4804
+ <PivotDeferUpdate
4805
+ deferUpdate="store.updatesAreDeferred"
4806
+ toggleDeferUpdate="(value) => store.deferUpdates(value)"
4807
+ isDirty="store.isDirty"
4808
+ discard="store.discardPendingUpdate"
4809
+ apply="store.applyUpdate"
4810
+ />
4547
4811
  </div>
4548
4812
  </t>
4549
4813
 
4814
+ <t t-name="o-spreadsheet-PivotTitleSection">
4815
+ <Section>
4816
+ <t t-set-slot="title">
4817
+ <div class="d-flex flex-row justify-content-between align-items-center">
4818
+ Name
4819
+ <CogWheelMenu items="cogWheelMenuItems"/>
4820
+ </div>
4821
+ </t>
4822
+ <EditableName name="name" displayName="displayName" onChanged.bind="onNameChanged"/>
4823
+ </Section>
4824
+ </t>
4825
+
4550
4826
  <t t-name="o-spreadsheet-RemoveDuplicatesPanel">
4551
4827
  <div class="o-remove-duplicates">
4552
4828
  <Section>
@@ -4607,6 +4883,7 @@
4607
4883
  menuItems="props.menuItems"
4608
4884
  position="menuPosition"
4609
4885
  onClose.bind="onMenuClosed"
4886
+ menuId="menuId"
4610
4887
  />
4611
4888
  </t>
4612
4889
 
@@ -4638,6 +4915,12 @@
4638
4915
  <span t-esc="dateTimeFormatPreview"/>
4639
4916
  </div>
4640
4917
  </div>
4918
+ <div class="alert alert-primary d-flex align-items-center mt-2" role="alert">
4919
+ <div class="o-icon">
4920
+ <i class="fa fa-info"/>
4921
+ </div>
4922
+ <div>This setting affects all users.</div>
4923
+ </div>
4641
4924
  </Section>
4642
4925
  </div>
4643
4926
  </t>
@@ -4648,20 +4931,30 @@
4648
4931
  <div class="o-sidePanelTitle" t-esc="getTitle()"/>
4649
4932
  <div class="o-sidePanelClose" t-on-click="close">✕</div>
4650
4933
  </div>
4651
- <div class="o-sidePanelBody">
4652
- <t
4653
- t-component="panel.Body"
4654
- t-props="sidePanelStore.panelProps"
4655
- onCloseSidePanel.bind="close"
4656
- t-key="'Body_' + sidePanelStore.componentTag + sidePanelStore.panelKey"
4657
- />
4658
- </div>
4659
- <div class="o-sidePanelFooter" t-if="panel?.Footer">
4660
- <t
4661
- t-component="panel.Footer"
4662
- t-props="sidePanelStore.panelProps"
4663
- t-key="'Footer_' + sidePanelStore.componentTag"
4664
- />
4934
+ <div class="o-sidePanelBody-container d-flex flex-grow-1 ">
4935
+ <div class="o-sidePanel-handle-container d-flex align-items-center">
4936
+ <div
4937
+ class="o-sidePanel-handle"
4938
+ t-on-pointerdown="startHandleDrag"
4939
+ t-on-dblclick="sidePanelStore.resetPanelSize">
4940
+ <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
4941
+ </div>
4942
+ </div>
4943
+ <div class="o-sidePanelBody">
4944
+ <t
4945
+ t-component="panel.Body"
4946
+ t-props="sidePanelStore.panelProps"
4947
+ onCloseSidePanel.bind="close"
4948
+ t-key="'Body_' + sidePanelStore.componentTag + sidePanelStore.panelKey"
4949
+ />
4950
+ </div>
4951
+ <div class="o-sidePanelFooter" t-if="panel?.Footer">
4952
+ <t
4953
+ t-component="panel.Footer"
4954
+ t-props="sidePanelStore.panelProps"
4955
+ t-key="'Footer_' + sidePanelStore.componentTag"
4956
+ />
4957
+ </div>
4665
4958
  </div>
4666
4959
  </div>
4667
4960
  </t>