1- from dash import Dash , html , Output , Input , no_update , State , ctx
1+ from dash import Dash , html , Output , Input , no_update , State , ctx , Patch
22import dash_ag_grid as dag
33import plotly .express as px
44import json
@@ -315,4 +315,206 @@ def make_grid(n):
315315 for x in range (10 ):
316316 dash_duo .find_element ("#add-grid" ).click ()
317317 time .sleep (2 ) # pausing to emulate separation because user inputs
318- assert list (filter (lambda i : i .get ("level" ) != "WARNING" , dash_duo .get_logs ())) == []
318+ assert list (filter (lambda i : i .get ("level" ) != "WARNING" , dash_duo .get_logs ())) == []
319+
320+ def test_cs003_column_state (dash_duo ):
321+ data = [
322+ {
323+ "localTime" : "5:00am" ,
324+ "a" : 0.231 ,
325+ "b" : 0.523 ,
326+ "c" : 0.423 ,
327+ "d" : 0.527 ,
328+ },
329+ {
330+ "localTime" : "5:15am" ,
331+ "a" : 0.423 ,
332+ "b" : 0.452 ,
333+ "c" : 0.523 ,
334+ "d" : 0.543 ,
335+ },
336+ {
337+ "localTime" : "5:30am" ,
338+ "a" : 0.537 ,
339+ "b" : 0.246 ,
340+ "c" : 0.426 ,
341+ "d" : 0.421 ,
342+ },
343+ {
344+ "localTime" : "5:45am" ,
345+ "a" : 0.893 ,
346+ "b" : 0.083 ,
347+ "c" : 0.532 ,
348+ "d" : 0.983 ,
349+ },
350+ {
351+ "localTime" : "6:00am" ,
352+ "a" : 0.231 ,
353+ "b" : 0.523 ,
354+ "c" : 0.423 ,
355+ "d" : 0.527 ,
356+ },
357+ {
358+ "localTime" : "6:15am" ,
359+ "a" : 0.423 ,
360+ "b" : 0.452 ,
361+ "c" : 0.523 ,
362+ "d" : 0.543 ,
363+ },
364+ {
365+ "localTime" : "6:30am" ,
366+ "a" : 0.537 ,
367+ "b" : 0.246 ,
368+ "c" : 0.426 ,
369+ "d" : 0.421 ,
370+ },
371+ {
372+ "localTime" : "6:45am" ,
373+ "a" : 0.893 ,
374+ "b" : 0.083 ,
375+ "c" : 0.532 ,
376+ "d" : 0.983 ,
377+ },
378+ {
379+ "localTime" : "7:00am" ,
380+ "a" : 0.231 ,
381+ "b" : 0.523 ,
382+ "c" : 0.423 ,
383+ "d" : 0.527 ,
384+ },
385+ {
386+ "localTime" : "7:15am" ,
387+ "a" : 0.423 ,
388+ "b" : 0.452 ,
389+ "c" : 0.523 ,
390+ "d" : 0.543 ,
391+ },
392+ {
393+ "localTime" : "7:30am" ,
394+ "a" : 0.537 ,
395+ "b" : 0.246 ,
396+ "c" : 0.426 ,
397+ "d" : 0.421 ,
398+ },
399+ {
400+ "localTime" : "7:45am" ,
401+ "a" : 0.893 ,
402+ "b" : 0.083 ,
403+ "c" : 0.532 ,
404+ "d" : 0.983 ,
405+ },
406+ {
407+ "localTime" : "8:00am" ,
408+ "a" : 0.231 ,
409+ "b" : 0.523 ,
410+ "c" : 0.423 ,
411+ "d" : 0.527 ,
412+ },
413+ {
414+ "localTime" : "8:15am" ,
415+ "a" : 0.423 ,
416+ "b" : 0.452 ,
417+ "c" : 0.523 ,
418+ "d" : 0.543 ,
419+ },
420+ {
421+ "localTime" : "8:30am" ,
422+ "a" : 0.537 ,
423+ "b" : 0.246 ,
424+ "c" : 0.426 ,
425+ "d" : 0.421 ,
426+ },
427+ {
428+ "localTime" : "8:45am" ,
429+ "a" : 0.893 ,
430+ "b" : 0.083 ,
431+ "c" : 0.532 ,
432+ "d" : 0.983 ,
433+ },
434+ {
435+ "localTime" : "8:00am" ,
436+ "a" : 0.231 ,
437+ "b" : 0.523 ,
438+ "c" : 0.423 ,
439+ "d" : 0.527 ,
440+ },
441+ {
442+ "localTime" : "8:15am" ,
443+ "a" : 0.423 ,
444+ "b" : 0.452 ,
445+ "c" : 0.523 ,
446+ "d" : 0.543 ,
447+ },
448+ {
449+ "localTime" : "8:30am" ,
450+ "a" : 0.537 ,
451+ "b" : 0.246 ,
452+ "c" : 0.426 ,
453+ "d" : 0.421 ,
454+ },
455+ {
456+ "localTime" : "8:45am" ,
457+ "a" : 0.893 ,
458+ "b" : 0.083 ,
459+ "c" : 0.532 ,
460+ "d" : 0.983 ,
461+ },
462+ ]
463+
464+ columnDefs = [
465+ {"field" : "localTime" },
466+ {"field" : "a" },
467+ {"field" : "b" },
468+ {"field" : "c" },
469+ {"field" : "d" },
470+ ]
471+
472+ app = Dash (__name__ )
473+
474+ app .layout = html .Div (
475+ [
476+ html .Div (
477+ [
478+ html .Button ("Remove Column" , id = "remove-column" , n_clicks = 0 ),
479+ html .Div (
480+ id = "grid-holder" ,
481+ children = [
482+ dag .AgGrid (
483+ id = f"grid" ,
484+ columnDefs = columnDefs ,
485+ rowData = data ,
486+ columnSize = "autoSize" ,
487+ )
488+ ],
489+ ),
490+ ],
491+ ),
492+ ]
493+ )
494+
495+ @app .callback (
496+ Output ("grid" , "columnDefs" ),
497+ Input ("remove-column" , "n_clicks" ),
498+ )
499+ def remove_column (n ):
500+ if n :
501+ cols = Patch ()
502+ if n < 3 :
503+ del cols [0 ]
504+ return cols
505+ return no_update
506+
507+ dash_duo .start_server (
508+ app ,
509+ debug = True ,
510+ use_reloader = False ,
511+ use_debugger = True ,
512+ dev_tools_hot_reload = False ,
513+ dev_tools_props_check = True ,
514+ dev_tools_disable_version_check = True ,
515+ )
516+
517+ for x in range (3 ):
518+ dash_duo .find_element ("#remove-column" ).click ()
519+ time .sleep (2 ) # pausing to emulate separation because user inputs
520+ assert list (filter (lambda i : i .get ("level" ) != "ERROR" , dash_duo .get_logs ())) == []
0 commit comments