| 
 | 1 | +// Third party imports  | 
1 | 2 | import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"  | 
2 |  | -import _ from "lodash"  | 
3 |  | -const blocks_schemas = viewer_schemas.opengeodeweb_viewer.model.blocks  | 
4 | 3 | 
 
  | 
5 |  | -export function useBlocksStyle() {  | 
6 |  | -  /** State **/  | 
 | 4 | +// Local constants  | 
 | 5 | +const model_blocks_schemas = viewer_schemas.opengeodeweb_viewer.model.blocks  | 
 | 6 | + | 
 | 7 | +export function useModelBlocksStyle() {  | 
7 | 8 |   const dataStyleStore = useDataStyleStore()  | 
8 | 9 |   const dataBaseStore = useDataBaseStore()  | 
9 | 10 | 
 
  | 
10 |  | -  /** Getters **/  | 
11 |  | -  function blockVisibility(id, block_id) {  | 
12 |  | -    return dataStyleStore.styles[id].blocks[block_id].visibility  | 
 | 11 | +  function modelBlockStyle(id, block_id) {  | 
 | 12 | +    if (!dataStyleStore.getStyle(id).blocks[block_id]) {  | 
 | 13 | +      dataStyleStore.getStyle(id).blocks[block_id] = {}  | 
 | 14 | +    }  | 
 | 15 | +    return dataStyleStore.getStyle(id).blocks[block_id]  | 
 | 16 | +  }  | 
 | 17 | + | 
 | 18 | +  function modelBlockVisibility(id, block_id) {  | 
 | 19 | +    return modelBlockStyle(id, block_id).visibility  | 
13 | 20 |   }  | 
14 | 21 | 
 
  | 
15 |  | -  /** Actions **/  | 
16 |  | -  function setBlockVisibility(id, block_ids, visibility) {  | 
 | 22 | +  function saveModelBlockVisibility(id, block_id, visibility) {  | 
 | 23 | +    modelBlockStyle(id, block_id).visibility = visibility  | 
 | 24 | +  }  | 
 | 25 | +  function setModelBlocksVisibility(id, block_ids, visibility) {  | 
17 | 26 |     const block_flat_indexes = dataBaseStore.getFlatIndexes(id, block_ids)  | 
18 | 27 |     return viewer_call(  | 
19 | 28 |       {  | 
20 |  | -        schema: blocks_schemas.visibility,  | 
 | 29 | +        schema: model_blocks_schemas.visibility,  | 
21 | 30 |         params: { id, block_ids: block_flat_indexes, visibility },  | 
22 | 31 |       },  | 
23 | 32 |       {  | 
24 | 33 |         response_function: () => {  | 
25 | 34 |           for (const block_id of block_ids) {  | 
26 |  | -            if (!dataStyleStore.styles[id].blocks[block_id])  | 
27 |  | -              dataStyleStore.styles[id].blocks[block_id] = {}  | 
28 |  | -            dataStyleStore.styles[id].blocks[block_id].visibility = visibility  | 
 | 35 | +            saveModelBlockVisibility(id, block_id, visibility)  | 
29 | 36 |           }  | 
30 |  | -          console.log("setBlockVisibility", block_ids, visibility)  | 
 | 37 | +          console.log(  | 
 | 38 | +            `${setModelBlocksVisibility.name} ${id} ${block_ids} ${modelBlockVisibility(id, block_ids[0])}`,  | 
 | 39 | +          )  | 
31 | 40 |         },  | 
32 | 41 |       },  | 
33 | 42 |     )  | 
34 | 43 |   }  | 
 | 44 | +  function modelBlockColor(id, block_id) {  | 
 | 45 | +    return modelBlockStyle(id, block_id).color  | 
 | 46 | +  }  | 
35 | 47 | 
 
  | 
36 |  | -  function setBlocksDefaultStyle(id) {  | 
37 |  | -    const block_ids = dataBaseStore.getBlocksUuids(id)  | 
38 |  | -    setBlockVisibility(  | 
39 |  | -      id,  | 
40 |  | -      block_ids,  | 
41 |  | -      dataStyleStore.styles[id].blocks.visibility,  | 
 | 48 | +  function saveModelBlockColor(id, block_id, color) {  | 
 | 49 | +    modelBlockStyle(id, block_id).color = color  | 
 | 50 | +  }  | 
 | 51 | + | 
 | 52 | +  function setModelBlocksColor(id, block_ids, color) {  | 
 | 53 | +    const block_flat_indexes = dataBaseStore.getFlatIndexes(id, block_ids)  | 
 | 54 | +    return viewer_call(  | 
 | 55 | +      {  | 
 | 56 | +        schema: model_blocks_schemas.color,  | 
 | 57 | +        params: { id, block_ids: block_flat_indexes, color },  | 
 | 58 | +      },  | 
 | 59 | +      {  | 
 | 60 | +        response_function: () => {  | 
 | 61 | +          for (const block_id of block_ids) {  | 
 | 62 | +            saveModelBlockColor(id, block_id, color)  | 
 | 63 | +          }  | 
 | 64 | +          console.log(  | 
 | 65 | +            `${setModelBlocksColor.name} ${id} ${block_ids} ${JSON.stringify(modelBlockColor(id, block_ids[0]))}`,  | 
 | 66 | +          )  | 
 | 67 | +        },  | 
 | 68 | +      },  | 
42 | 69 |     )  | 
43 | 70 |   }  | 
44 | 71 | 
 
  | 
45 |  | -  function applyBlocksStyle(id) {  | 
46 |  | -    const blocks = dataStyleStore.styles[id].blocks  | 
47 |  | -    for (const [block_id, style] of Object.entries(blocks)) {  | 
48 |  | -      setBlockVisibility(id, [block_id], style.visibility)  | 
49 |  | -    }  | 
 | 72 | +  function setModelBlocksDefaultStyle(id) {  | 
 | 73 | +    const blocks = dataBaseStore.getBlocksUuids(id)  | 
 | 74 | +    return Promise.all([  | 
 | 75 | +      setModelBlocksVisibility(  | 
 | 76 | +        id,  | 
 | 77 | +        blocks,  | 
 | 78 | +        dataStyleStore.styles[id].blocks.visibility,  | 
 | 79 | +      ),  | 
 | 80 | +      setModelBlocksColor(id, blocks, dataStyleStore.styles[id].blocks.color),  | 
 | 81 | +    ])  | 
 | 82 | +  }  | 
 | 83 | + | 
 | 84 | +  function applyModelBlocksStyle(id) {  | 
 | 85 | +    console.log("applyModelBlocksStyle", id)  | 
 | 86 | +    const blocks_style = dataStyleStore.getStyle(id).blocks  | 
 | 87 | +    console.log("blocks_style", blocks_style)  | 
 | 88 | + | 
 | 89 | +    const block_ids = dataBaseStore.getBlocksUuids(id)  | 
 | 90 | +    return Promise.all([  | 
 | 91 | +      setModelBlocksVisibility(id, [block_ids], blocks_style.visibility),  | 
 | 92 | +      setModelBlocksColor(id, [block_ids], blocks_style.color),  | 
 | 93 | +    ])  | 
50 | 94 |   }  | 
51 | 95 | 
 
  | 
52 | 96 |   return {  | 
53 |  | -    blockVisibility,  | 
54 |  | -    setBlocksDefaultStyle,  | 
55 |  | -    setBlockVisibility,  | 
56 |  | -    applyBlocksStyle,  | 
 | 97 | +    modelBlockVisibility,  | 
 | 98 | +    modelBlockColor,  | 
 | 99 | +    setModelBlocksVisibility,  | 
 | 100 | +    setModelBlocksColor,  | 
 | 101 | +    setModelBlocksDefaultStyle,  | 
 | 102 | +    applyModelBlocksStyle,  | 
57 | 103 |   }  | 
58 | 104 | }  | 
0 commit comments