concernements.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. import { defineStore } from 'pinia'
  2. import { UserStore } from '@/stores/user';
  3. // import REST from '@api/rest-axios'
  4. // import JSONAPI from '@api/json-axios'
  5. import { print } from 'graphql/language/printer'
  6. import gql from 'graphql-tag'
  7. // import REST from '@api/rest-axios'
  8. import GQL from '@api/graphql-axios'
  9. // import JSONAPI from '@api/json-axios'
  10. import ConcernementFields from '@api/gql/concernement.fragment.gql'
  11. // import EntityFields from '@api/gql/entitydef.fragment.gql'
  12. import _assign from 'lodash/assign';
  13. export const ConcernementsStore = defineStore({
  14. id: 'concernements',
  15. state: () => ({
  16. map_mode: null,
  17. concernements_loading_nb: 0,
  18. concernements: [],
  19. concernementsByID: {},
  20. allEntitesById: {},
  21. allBesoinsById: {},
  22. allSuperpositions: [],
  23. allSuperpositions_bycids: {},
  24. allSuperpositions_clustered: [],
  25. allMapItems_byid: {},
  26. allProximites: [],
  27. opened_concernement: false,
  28. opened_entite_id: null,
  29. opened_recit: false,
  30. recit_plyr_player: null,
  31. ct_concernement: {},
  32. ct_entite: {},
  33. ct_cercle_politique: {},
  34. p_groupes_interets: {},
  35. p_reception_et_traitement: {},
  36. p_mise_en_oeuvre_decision: {},
  37. p_reception_application_decision: {},
  38. concernements_loaded: false,
  39. concernements_are_loading: false,
  40. concernement_active_revision: null,
  41. detailsZoomValue: 1,
  42. }),
  43. getters: {
  44. },
  45. actions: {
  46. setMapMode(mode) {
  47. console.log(`set map_mode ${mode}`);
  48. // mode can be : terraindevie, proximite, superposition, puissancedagir, action, doleancer
  49. this.map_mode = mode;
  50. },
  51. loadConcernements () {
  52. console.log('concernements store loadConcernements');
  53. this.concernements_are_loading = true;
  54. return new Promise((resolve, reject) => {
  55. const ast = gql`{
  56. allconcernements {
  57. ...ConcernementFields
  58. }
  59. }
  60. ${ConcernementFields}
  61. `
  62. // console.log('ast', ast);
  63. GQL.post('', { query: print(ast) })
  64. .then(({ data : { data : { allconcernements } } }) => {
  65. console.log('loadconcernements loaded', allconcernements)
  66. this.concernements = [];
  67. this.parseConcernements(allconcernements, true)
  68. this.concernements_loaded = true;
  69. this.concernements_loading_nb ++;
  70. this.concernements_are_loading = false;
  71. resolve();
  72. })
  73. .catch(error => {
  74. console.warn('Issue with loadConcernements', error)
  75. this.concernements_are_loading = false;
  76. Promise.reject(error)
  77. })
  78. })
  79. },
  80. parseConcernements(allconcernements, init) {
  81. console.log('parse concernements');
  82. let temp_allSuperpositions = [];
  83. allconcernements.forEach((concernement) => {
  84. // console.log(`parsing concernement ${concernement.id}`);
  85. concernement.visible = true;
  86. concernement.entites_byid = {};
  87. concernement.entitesagissantes_byid = {};
  88. concernement.has_proximites = false;
  89. concernement.has_superpositions = false;
  90. concernement.has_agissantes = false;
  91. concernement.entites.forEach(entite => {
  92. // console.log(`parsing entite ${entite.id}`);
  93. if (entite.entite) { // entite.entite may be null because of workflow confidentiality
  94. if (!concernement.entites_byid[entite.entite.id]) {
  95. concernement.entites_byid[entite.entite.id] = entite;
  96. }
  97. // record entite agissante
  98. if (entite.entite.agissante) {
  99. if (!concernement.entitesagissantes_byid[entite.entite.id]) {
  100. concernement.entitesagissantes_byid[entite.entite.id] = entite;
  101. }
  102. concernement.has_agissantes = true;
  103. }
  104. // record a flat list of all entités of all concernement for map-popup
  105. if (!this.allEntitesById[entite.entite.id]) {
  106. this.allEntitesById[entite.entite.id] = entite;
  107. this.allEntitesById[entite.entite.id].cid = concernement.id;
  108. }
  109. // PROXIMITES
  110. if (entite.entite.proximite.length) {
  111. // console.log("proximite", entite.entite.proximite);
  112. concernement.has_proximites = true;
  113. }
  114. // SUPERPOSITIONS
  115. if (entite.entite.superposition.length) {
  116. // create properties for later
  117. if (init) {
  118. concernement.superpositions = {};
  119. concernement.superposition_constraints_id = {};
  120. concernement.all_superposed_concernements_id = [];
  121. concernement.superposed_mapitem_id_by_mapitem_id = {};
  122. }
  123. entite.entite.superposition.forEach(entite_superpose => {
  124. // console.log(`superposition eid:${entite.entite.id}, teid:${entite_superpose.id}`);
  125. let already_recorded = false;
  126. // loop through all already recorded superposition to complete the array instead of create duplicates
  127. // TODO check if target cid and eid are accessible before recording the superposition
  128. // check if half of the superpositions is already recorded, if yes complete it (add the missing concernement id)
  129. for(let superposition of temp_allSuperpositions) {
  130. for(let superposition_item of superposition) {
  131. if (superposition_item.eid === entite.entite.id && !superposition_item.cid) {
  132. // console.log(`already_recorded, eid:${entite.entite.id}, teid:${entite_superpose.id}`, entite.entite.title);
  133. already_recorded = true;
  134. superposition_item.cid = concernement.id;
  135. break;
  136. }
  137. }
  138. if (already_recorded) {
  139. break;
  140. }
  141. }
  142. // if not already recorded, add it to the array. It is incomplete has it's missing one concernement id wich will be filled in next loops
  143. if (!already_recorded) {
  144. // console.log(`NOT already_recorded, eid:${entite.entite.id}, teid:${entite_superpose.id}`, entite.entite.title);
  145. let s = [
  146. {
  147. cid: concernement.id,
  148. eid: entite.entite.id
  149. },
  150. {
  151. cid: null,
  152. eid: entite_superpose.id
  153. }
  154. ];
  155. // concernement.superpositions.push(s);
  156. temp_allSuperpositions.push(s);
  157. }
  158. })
  159. }
  160. }
  161. }); // end of concernement.entites loop
  162. // revisions
  163. concernement.active_revision = concernement.revision_id;
  164. concernement.revisions_byid = {};
  165. concernement.revisions.forEach(rev => {
  166. concernement.revisions_byid[rev.revision_id] = rev;
  167. });
  168. // puissance d'agir
  169. concernement.has_puissancedagir = concernement.besoins.length ? true : false;
  170. concernement.besoins.forEach(besoin => {
  171. this.allBesoinsById[besoin.id] = besoin;
  172. });
  173. // doleance
  174. concernement.has_doleance = concernement.doleances.length ? true : false;
  175. if (concernement.has_doleance) {
  176. // console.log('concernement has doleance', concernement.doleances);
  177. concernement.opened_doleance = {
  178. id: concernement.doleances[0].id
  179. };
  180. }
  181. // recit
  182. concernement.has_recit = concernement.recit !== null;
  183. // common
  184. // if (!concernement_is_reloaded) {
  185. this.concernements.push(concernement);
  186. this.concernementsByID[concernement.id] = concernement;
  187. // }else{
  188. // // this.concernements[concernement_index] = concernement;
  189. // this.concernementsByID[concernement.id] = concernement;
  190. // // TODO check that this.concernements and this.concernementsByID contains the same item
  191. // }
  192. }); // end of concernements loop
  193. // console.log('this.concernements', this.concernements);
  194. // console.log('this.concernementsByID', this.concernementsByID);
  195. // console.log('temp_allSuperpositions', temp_allSuperpositions);
  196. // cleaning superpositions, removing all incomplète onces
  197. this.allSuperpositions = [];
  198. temp_allSuperpositions.forEach(s => {
  199. if (s[0] && s[0].cid && s[0].eid && s[1] && s[1].cid && s[1].eid) {
  200. this.allSuperpositions.push(s);
  201. this.concernementsByID[s[0].cid].has_superpositions = true;
  202. this.concernementsByID[s[1].cid].has_superpositions = true;
  203. }
  204. });
  205. // console.log('this.allSuperpositions', this.allSuperpositions);
  206. // 1 check if cluster already exists and if yes complete with the next item of cluster
  207. // 2 if cluster deos not exists, create the cluster and fill it with first item of cluster
  208. // 1 check if cluster already exists and if yes complete with the next item of cluster
  209. // get superpositions by cluster
  210. for(let superpos_to_record of this.allSuperpositions){
  211. let recorded = false;
  212. // console.log('-- -- --');
  213. // console.log(`superpos_to_record : ${superpos_to_record[0].cid}-${superpos_to_record[0].eid}, ${superpos_to_record[1].cid}-${superpos_to_record[1].eid}`);
  214. // loop through alredy recorded clusters
  215. for(let [cluster_index, superpo_cluster] of this.allSuperpositions_clustered.entries()){
  216. // console.log('cluster_index', cluster_index);
  217. // for each cluster loop throug each superposition
  218. in_cluster_loop:{
  219. for(let s of superpo_cluster){
  220. // console.log(`s : ${s.cid}-${s.eid}`);
  221. // loop through each cid_eid couple of superpo to be recorded
  222. for(let i = 0; i <= 1; i++){
  223. // if one couple already recorded in the cluster, add the other one to the same cluster
  224. if (superpos_to_record[i].cid === s.cid && superpos_to_record[i].eid === s.eid){
  225. // console.log('-- recorded');
  226. let j = i === 0 ? 1 : 0;
  227. // check if item is not already recorded in the cluster (in case of reparsing concernements)
  228. let already_clustered = false;
  229. for (let s2 of superpo_cluster) {
  230. if (superpos_to_record[j].cid === s2.cid && superpos_to_record[j].eid === s2.eid){
  231. already_clustered = true;
  232. break;
  233. }
  234. }
  235. // if not already recorded
  236. if (!already_clustered) {
  237. // add the right item to the cluster
  238. this.allSuperpositions_clustered[cluster_index].push(superpos_to_record[j]);
  239. }
  240. // record the superposition on the concernement BY cluster index
  241. // create array if not already exists
  242. if(typeof this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index] === 'undefined'){
  243. this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index] = [superpos_to_record];
  244. }else if(!already_clustered){
  245. this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index].push(superpos_to_record);
  246. }
  247. recorded = true;
  248. break in_cluster_loop;
  249. }
  250. }
  251. }
  252. }
  253. }
  254. // 2 if cluster deos not exists, create the cluster and fill it with first item of cluster
  255. if(!recorded){
  256. // console.log('-- not recorded');
  257. // create cluster and fill it with first item of couple
  258. this.allSuperpositions_clustered.push(superpos_to_record);
  259. // record superposition on each concernement of each couple member BY cluster index
  260. for( let i=0; i <= 1; i++){
  261. this.concernementsByID[superpos_to_record[i].cid].superpositions[this.allSuperpositions_clustered.length-1] = [superpos_to_record];
  262. // console.log(`concernement ${superpos_to_record[i].cid} superposition by cluster index`,this.concernementsByID[superpos_to_record[i].cid].superpositions);
  263. }
  264. }
  265. }
  266. // console.log('this.allSuperpositions_clustered', this.allSuperpositions_clustered);
  267. // console.log(`end of parsing concernements`);
  268. },
  269. reloadConcernements () {
  270. console.log('reloadConcernements');
  271. return new Promise((resolve, reject) => {
  272. // reset the arrays
  273. this.concernements = [];
  274. this.concernementsByID = {};
  275. // this.concernements_loaded = false;
  276. this.loadConcernements()
  277. .then(()=>{
  278. resolve();
  279. });
  280. })
  281. },
  282. reloadConcernementEntites(nid){
  283. let tmp_conc = this.concernementsByID[nid];
  284. console.log(`reloadConcernementEntites len: ${tmp_conc.entites.length} revision: ${tmp_conc.revision_id} nid: ${nid}`);
  285. return new Promise((resolve, reject) => {
  286. const ast = gql`{
  287. concernement(id:${nid}) {
  288. id
  289. entites {
  290. id
  291. revision_id
  292. menacemaintien
  293. actuelfuture
  294. entite {
  295. title
  296. id
  297. agissante
  298. proximite {
  299. id
  300. title
  301. }
  302. superposition {
  303. id
  304. title
  305. }
  306. }
  307. }
  308. revision_id
  309. revisions {
  310. revision_id
  311. changed
  312. entites {
  313. menacemaintien
  314. prise
  315. actuelfuture
  316. entite {
  317. id
  318. title
  319. agissante
  320. proximite {
  321. id
  322. title
  323. }
  324. superposition {
  325. id
  326. title
  327. }
  328. }
  329. }
  330. }
  331. }
  332. }
  333. `
  334. // console.log('ast', ast);
  335. GQL.post('', { query: print(ast) })
  336. .then(({ data : { data : { concernement } } }) => {
  337. console.log(`reloadConcernementEntites loaded len: ${concernement.entites.length} revision: ${concernement.revision_id}`, concernement)
  338. let tmp_conc = this.concernementsByID[concernement.id];
  339. // merge old concernement entites with new once
  340. _assign(tmp_conc.entites, concernement.entites);
  341. // records and/or merge into general object and on cpnernement entitites_byid
  342. tmp_conc.entites.forEach(entite => {
  343. entite.cid = tmp_conc.id;
  344. if (this.allEntitesById[entite.entite.id]) {
  345. _assign(this.allEntitesById[entite.entite.id], entite);
  346. }else{
  347. this.allEntitesById[entite.entite.id] = entite;
  348. }
  349. if (tmp_conc.entites_byid[entite.entite.id]) {
  350. _assign(tmp_conc.entites_byid[entite.entite.id], entite);
  351. }else{
  352. tmp_conc.entites_byid[entite.entite.id] = entite;
  353. }
  354. });
  355. // add and/or merge revisions
  356. tmp_conc.active_revision = concernement.revision_id;
  357. concernement.revisions.forEach(rev => {
  358. if(tmp_conc.revisions_byid[rev.revision_id]){
  359. _assign(tmp_conc.revisions_byid[rev.revision_id], rev);
  360. }else{
  361. tmp_conc.revisions_byid[rev.revision_id] = rev;
  362. tmp_conc.revisions.push(rev);
  363. }
  364. })
  365. let user = UserStore();
  366. user.getUserEntitees()
  367. .then(() => {
  368. console.log('reloadConcernementEntites graphql userentites loaded')
  369. })
  370. .catch(error => {
  371. console.warn('Issue with graphql userentites loading', error);
  372. })
  373. resolve(concernement);
  374. })
  375. .catch(error => {
  376. console.warn('Issue with reloadConcernementEntites', error)
  377. reject(error);
  378. Promise.reject(error)
  379. })
  380. })
  381. },
  382. reloadProximites (entite_id) {
  383. console.log(`reloadProximites src_id:${entite_id}`);
  384. console.log('this.allEntitesById[entite_id]', this.allEntitesById[entite_id]);
  385. return new Promise((resolve, reject) => {
  386. let old_entite = this.allEntitesById[entite_id];
  387. const ast = gql`{
  388. entite(id:${entite_id}) {
  389. title
  390. id
  391. proximite {
  392. id
  393. title
  394. }
  395. }
  396. }
  397. `
  398. GQL.post('', { query: print(ast) })
  399. .then(({ data : { data : { entite } } }) => {
  400. console.log(`reloadProximites loaded`, entite);
  401. let concernement = this.concernementsByID[old_entite.cid];
  402. console.log('concernement', concernement);
  403. concernement.entites_byid[entite.id].entite.proximite = entite.proximite;
  404. let user = UserStore();
  405. console.log('user', user);
  406. user.getUserEntitees()
  407. .then(() => { // { data : { data : { userentites } } }
  408. console.log('reloadProximites graphql userentites loaded')
  409. // this.user_entites = userentites;
  410. resolve();
  411. })
  412. .catch(error => {
  413. console.warn('Issue with graphql userentites loading', error)
  414. Promise.reject(error)
  415. })
  416. })
  417. .catch(error => {
  418. console.warn('Issue with reloadProximites', error);
  419. })
  420. });
  421. },
  422. loadContentTypeDefinition () {
  423. const body = {
  424. query: `
  425. query EntityDef($type: String!, $bundle: String!){
  426. entitydef(type: $type, bundle: $bundle) {
  427. fields {
  428. type
  429. field_name
  430. label
  431. description
  432. }
  433. }
  434. }`,
  435. variables: {}
  436. }
  437. // concernement
  438. body.variables = { type: 'node', bundle: 'concernement' }
  439. GQL.post('', body)
  440. .then(({ data: { data: { entitydef }}}) => {
  441. // console.log('loadContentTypeDefinition entitydef', entitydef);
  442. entitydef.fields.forEach(field => {
  443. this.ct_concernement[field.field_name] = field;
  444. });
  445. console.log('loadContentTypeDefinition entitydef concernement', this.ct_concernement);
  446. })
  447. // entite
  448. body.variables = { type: 'node', bundle: 'entite' }
  449. GQL.post('', body)
  450. .then(({ data: { data: { entitydef }}}) => {
  451. // console.log('loadContentTypeDefinition entitydef', entitydef);
  452. entitydef.fields.forEach(field => {
  453. this.ct_entite[field.field_name] = field;
  454. });
  455. console.log('loadContentTypeDefinition entitydef entite', this.ct_entite);
  456. })
  457. // cercle_politique
  458. body.variables = { type: 'node', bundle: 'cercle_politique' }
  459. GQL.post('', body)
  460. .then(({ data: { data: { entitydef }}}) => {
  461. // console.log('loadContentTypeDefinition entitydef', entitydef);
  462. entitydef.fields.forEach(field => {
  463. this.ct_cercle_politique[field.field_name] = field;
  464. });
  465. console.log('loadContentTypeDefinition entitydef cercle_politique', this.ct_cercle_politique);
  466. })
  467. // paragraphe groupes_interets
  468. body.variables = { type: 'paragraph', bundle: 'groupes_interets' }
  469. GQL.post('', body)
  470. .then(({ data: { data: { entitydef }}}) => {
  471. // console.log('loadContentTypeDefinition entitydef', entitydef);
  472. entitydef.fields.forEach(field => {
  473. this.p_groupes_interets[field.field_name] = field;
  474. });
  475. console.log('loadContentTypeDefinition entitydef p_groupes_interets', this.p_groupes_interets);
  476. })
  477. // paragraphe reception_et_traitement
  478. body.variables = { type: 'paragraph', bundle: 'reception_et_traitement' }
  479. GQL.post('', body)
  480. .then(({ data: { data: { entitydef }}}) => {
  481. // console.log('loadContentTypeDefinition entitydef', entitydef);
  482. entitydef.fields.forEach(field => {
  483. this.p_reception_et_traitement[field.field_name] = field;
  484. });
  485. console.log('loadContentTypeDefinition entitydef p_reception_et_traitement', this.p_reception_et_traitement);
  486. })
  487. // paragraphe mise_en_oeuvre_decision
  488. body.variables = { type: 'paragraph', bundle: 'mise_en_oeuvre_decision' }
  489. GQL.post('', body)
  490. .then(({ data: { data: { entitydef }}}) => {
  491. // console.log('loadContentTypeDefinition entitydef', entitydef);
  492. entitydef.fields.forEach(field => {
  493. this.p_mise_en_oeuvre_decision[field.field_name] = field;
  494. });
  495. console.log('loadContentTypeDefinition entitydef p_mise_en_oeuvre_decision', this.p_mise_en_oeuvre_decision);
  496. })
  497. // paragraphe reception_application_decision
  498. body.variables = { type: 'paragraph', bundle: 'reception_application_decision' }
  499. GQL.post('', body)
  500. .then(({ data: { data: { entitydef }}}) => {
  501. // console.log('loadContentTypeDefinition entitydef', entitydef);
  502. entitydef.fields.forEach(field => {
  503. this.p_reception_application_decision[field.field_name] = field;
  504. });
  505. console.log('loadContentTypeDefinition entitydef p_reception_application_decision', this.p_reception_application_decision);
  506. })
  507. },
  508. hideShowConcernement (id, state) {
  509. // console.log(`disableConcernement id: ${id}`);
  510. this.concernements.forEach((c, i) => {
  511. if (c.id === id) {
  512. this.concernements[i].visible = this.concernementsByID[id].visible = state;
  513. }
  514. })
  515. },
  516. openCloseConcernements (cid, id) {
  517. console.log(`openCloseConcernements cid: ${cid}, id: ${id}`);
  518. var state;
  519. let mapitem_id = id ? id : cid;
  520. this.opened_concernement = null;
  521. this.opened_recit = null;
  522. this.concernements.forEach((c, i) => {
  523. // console.log(`openCloseConcernements foreach id: ${id}, c.id: ${c.id}, state: ${state}`, id, c.id);
  524. c.opened = this.concernements[i].opened = this.concernementsByID[c.id].opened = cid === c.id;
  525. if (c.opened) {
  526. this.opened_concernement = c;
  527. this.opened_concernement.opened_mapitem_id = mapitem_id;
  528. if (c.has_recit && this.map_mode === "terraindevie") {
  529. this.opened_recit = c.recit;
  530. }
  531. this.concernement_active_revision = {cid: cid, rid: c.active_revision}
  532. // console.log('openCloseConcernements', this.opened_concernement.opened);
  533. }
  534. });
  535. },
  536. resetConcernementOpened () {
  537. this.opened_concernement = null;
  538. this.openCloseConcernements();
  539. },
  540. // setConcernementScale(cid, scale){
  541. // console.log(`setConcernementScale ${cid} ${scale}`);
  542. // this.concernementsByID[cid].scale = scale;
  543. // },
  544. setOpenedEntiteId(id){
  545. this.opened_entite_id = id;
  546. },
  547. setBesoinPaperId(paper_id, cid, bid, rid){
  548. // this.concernements.forEach((c, i) => {
  549. // if(c.id === cid){
  550. this.concernementsByID[cid].besoins.forEach((b,j) => {
  551. if(b.id === bid) {
  552. if (!rid) {
  553. // this.concernements[i].besoins[j].paper_id = this.concernementsByID[cid].besoins[j].paper_id = paper_id;
  554. this.concernementsByID[cid].besoins[j].paper_id = paper_id;
  555. } else {
  556. this.concernementsByID[cid].besoins[j].reponses.forEach((r,k) => {
  557. if (r.id === rid) {
  558. // this.concernements[i].besoins[j].reponses[k].paper_id = this.concernementsByID[cid].besoins[j].reponses[k].paper_id = paper_id;
  559. this.concernementsByID[cid].besoins[j].reponses[k].paper_id = paper_id;
  560. }
  561. })
  562. }
  563. }
  564. })
  565. // }
  566. // })
  567. },
  568. setOpenedDoleance(cid, did){
  569. console.log(`setOpenedDoleance(${cid}, ${did})`, cid, did);
  570. this.concernementsByID[cid].opened_doleance = {id: did};
  571. // console.log('this.opened_concernement.opened_doleance', this.opened_concernement.opened_doleance);
  572. },
  573. setOpenedDoleanceField(cid, did, field, index){
  574. console.log(`setOpenedDoleanceField cid, did, field, index`, cid, did, field, index);
  575. this.concernementsByID[cid].opened_doleance = {
  576. cid: cid,
  577. id: did,
  578. field: field,
  579. field_index: index
  580. };
  581. },
  582. setOpenedRecit (recit) {
  583. this.opened_recit = recit;
  584. },
  585. setRecitPlayer (player) {
  586. console.log('concernement store setRecitPlayer', player);
  587. this.recit_plyr_player = player;
  588. },
  589. setActiveRevision (cid, rid) {
  590. console.log(`setActiveRevision, cid:${cid}, rid:${rid}`);
  591. // this.concernementsByID[cid].active_revision = rid;
  592. this.concernement_active_revision = {cid: cid, rid: rid};
  593. },
  594. setDetailsZoomValue (z) {
  595. console.log(`concernement store setDetailsZoomValue ${z}`);
  596. this.detailsZoomValue = z;
  597. }
  598. }
  599. })