11<script lang =" ts" >
2- import { getEdit , getHooks } from ' ./services' ;
32 import { Page , ErrorMessage , pageContentLayoutType } from ' @bexis2/bexis2-core-ui' ;
4- import { Modal } from ' @skeletonlabs/skeleton ' ;
5-
6- import type { linkType } from ' @bexis2/bexis2-core-ui ' ;
7-
3+ import { onMount } from ' svelte ' ;
4+ import type { linkType } from ' @bexis2/bexis2-core-ui ' ;
5+ import Entity from ' ./Entity.svelte ' ;
6+ import { getEntityTemplateByObject } from ' ../../services/EntityTemplateCaller ' ;
87 import Header from ' ./Header.svelte' ;
9- import Data from ' ./Data.svelte' ;
10- import Hooks from ' ./Hooks.svelte' ;
118
12- import {
13- latestFileUploadDate ,
14- latestDataDescriptionDate ,
15- latestFileReaderDate ,
16- latestSubmitDate ,
17- hooksStatus ,
18- latestValidationDate ,
19- latestDataDate
20- } from ' ./stores' ;
9+ import type { ExtensionType } from ' ./types'
10+ import AdvancedEntity from ' ./AdvancedEntity.svelte' ;
11+ import { getExtensions } from ' ./services' ;
2112
22- import type { EditModel , HookModel , ViewModel } from ' ./types' ;
23- import Placeholder from ' ./PlaceholderPage.svelte' ;
2413
25- // load attributes from div
2614 let container;
2715 let id: number = 0 ;
28-
2916 let version: number ;
17+ let title = " " ;
3018
31- let title = ' ' ;
32-
33- $ : title ;
34-
35- let model: EditModel = {
36- id: 0 ,
37- versionId: 0 ,
38- version: 0 ,
39- title: ' ' ,
40- hooks: [],
41- views: []
42- };
43-
44- let hookStatusList: { [key : string ]: number };
45- $ : hookStatusList ;
46- // hooks
47- let hooks: HookModel [];
48- $ : hooks = [];
49-
50- let datasethooks: HookModel [];
51- $ : datasethooks = [];
52-
53- let addtionalhooks: HookModel [];
54- $ : addtionalhooks = [];
55-
56- // views
57- let views: ViewModel [];
58- $ : views = [];
59-
60- let additionalViews: ViewModel [];
61- $ : additionalViews = [];
62-
63- let messageView: ViewModel ;
64- $ : messageView ;
65-
66- latestFileUploadDate .subscribe ((e ) => {
67- updateHookStatus ();
68- });
69-
70- latestDataDescriptionDate .subscribe ((e ) => {
71- updateHookStatus ();
72- });
19+ let entityTemplate = null ;
20+ let extensions: ExtensionType [] = []
7321
74- latestFileReaderDate .subscribe ((e ) => {
75- updateHookStatus ();
76- });
77-
78- latestValidationDate .subscribe ((e ) => {
79- updateHookStatus ();
80- });
81-
82- latestSubmitDate .subscribe ((e ) => {
83- updateHookStatus ();
84- });
85-
86- latestDataDate .subscribe ((e ) => {
87- updateHookStatus ();
88- });
89- async function load() {
90- console .log (' LOAD EDIT' , Date .now );
22+ const links: linkType [] = [
23+ {
24+ label: ' Manual' ,
25+ url: ' /home/docs/Datasets#dataset-edit-page'
26+ }
27+ ];
9128
29+ onMount (async () => {
30+ console .log (' LOAD EDIT' , Date .now );
9231 // get data from parent
9332 container = document .getElementById (' edit' );
9433 id = Number (container ?.getAttribute (' dataset' ));
9534 version = Number (container ?.getAttribute (' version' ));
9635
97- // load model froms server
98- model = await getEdit (id );
99- hooks = model .hooks ;
100- views = model .views ;
101- title = model .title ;
102- version = model .version ;
103-
104- // // there is a need for a time delay to update the hook status
105- // // if not exit, the first run faild because the hooks are not
106- // setTimeout(async () => {
36+ entityTemplate = await getEntityTemplateByObject (id );
37+ console .log (" 🚀 ~ entityTemplate:" , entityTemplate )
10738
108- console .log (' 🚀 ~ file: +page.svelte:89 ~ load ~ hooks:' , hooks );
109- // update store
110- if (model .hooks ) {
111- updateStatus (model .hooks );
112-
113- // seperate dcm hooks from other hooks
114- seperateHooks (model .hooks );
115-
116- // get resultView
117- seperateViews (views );
118- }
39+ if (entityTemplate .hasExtension ) // load extentions if existing
40+ {
41+ extensions = await getExtensions (id );
42+ console .log (" 🚀 ~ extensions:" , extensions )
43+ }
11944
120- // }, 1000); /* <--- If this is enough greater than transition, it doesn't happen... */
121- }
45+ });
46+
12247
123- async function updateHookStatus() {
124- let wait = false ;
125- let time = 1000 ;
126-
127- if (id > 0 ) {
128- do {
129- // get status of hooks,
130- const r = await getHooks (id );
131-
132- model .hooks = r ;
133- if (model .hooks ) {
134- updateStatus (model .hooks );
135-
136- if (model .hooks .filter ((h ) => h .status == 6 ).length > 0 ) {
137- wait = true ;
138- } else {
139- wait = false ;
140- }
141-
142- if (time <= 10000 ) {
143- time = time * 2 ;
144- }
145- }
146-
147- await sleep (time );
148- console .log (' test' );
149- } while (wait );
150- }
151- }
152-
153- function sleep(milliseconds ) {
154- return new Promise ((resolve ) => setTimeout (resolve , milliseconds ));
155- }
156-
157- // seperate dcm hooks from other hooks
158- // known hooks - metadata, fileupload, validation
159- function seperateHooks(hooks : HookModel []) {
160- datasethooks = [];
161- addtionalhooks = [];
162-
163- hooks .forEach ((element ) => {
164- if (
165- element .name == ' metadata' ||
166- element .name == ' fileupload' ||
167- element .name == ' validation' ||
168- element .name == ' submit' ||
169- element .name == ' datadescription' ||
170- element .name == ' data'
171- ) {
172- datasethooks .push (element );
173- } else {
174- addtionalhooks .push (element );
175- }
176- });
177- }
178-
179- // seperate known views from other views
180- // known view - resultMessages
181- function seperateViews(views ) {
182- views .forEach ((element ) => {
183- if (element .name == ' messages' ) {
184- messageView = element ;
185- } else {
186- additionalViews .push (element );
187- }
188- });
189- }
190-
191- function updateStatus(_hooks : HookModel []) {
192- let dic: { [key : string ]: number } = { [' ' ]: 0 };
193-
194- if (_hooks !== undefined ) {
195- _hooks .forEach ((hook ) => {
196- dic [hook .name ] = hook .status ;
197- });
198-
199- hooksStatus .set (dic );
200- }
201-
202- hookStatusList = $hooksStatus ;
203- }
204-
205- // debug infos
206- let visible = false ;
207-
208- const links: linkType [] = [
209- {
210- label: ' Manual' ,
211- url: ' /home/docs/Datasets#dataset-edit-page'
212- }
213- ];
21448 </script >
215-
21649<Page title ="Edit: ( {id } | {title })" contentLayoutType ={pageContentLayoutType .full } {links }>
217- <Header {id } {version } {title } />
218- {#await load ()}
219- <Placeholder />
220- {:then a }
221- {#if model && model .hooks && datasethooks && addtionalhooks && hookStatusList }
222- <!-- Data Module Hooks -->
223- <Data bind:hooks ={datasethooks } {id } {version } />
22450
225- <hr class =" !border-dashed" />
51+ {#if entityTemplate }
52+ <Header {id } {version } {title } />
53+
54+ {#if entityTemplate .hasExtension } <!--if using extensions add a tab here-->
55+ <AdvancedEntity {id } {version } {title } {extensions } />
22656
227- <Hooks bind:hooks ={addtionalhooks } {id } {version } />
228- {:else }
229- <Placeholder />
230- {/if }
231- {:catch error }
232- <ErrorMessage {error } />
233- {/await }
234- </Page >
57+ {:else }
58+ <Entity {id } {version } {title } />
59+ {/if }
60+
61+ {/if }
62+
23563
236- <Modal / >
64+ </ Page >
0 commit comments